NSDT Lattice WebThis script creates a "web" by connecting different points of candles. All configurable by the trader.
There are 4 basic parts to a candle:
Open, High, Low, and Close
With this script, you can connect any point of one candle in the past to any point of another current candle.
For example:
High to High, High to Low, High to Open, High to close
Low to High, Low to Low, Low to Open, Low to Close
Open to High, Open to Low, Open to Open, Open to Close
Close to High, Close to Low, Close to Open, Close to Close
The script will change the line colors based on whether the current plot is higher or lower than the previous plot.
Try out different connection points to see what works for you. Connecting High to High and Low to Low, might easily show you when the market is making higher highs or lower lows, indicating a potential movement.
Run it on replay at a higher speed and see how it may potentially help identify area of congestion or trends.
在腳本中搜尋"high low"
Bar metrics / quantifytools— Overview
Rather than eyeball evaluating bullishness/bearishness in any given bar, bar metrics allow a quantified approach using three basic fundamental data points: relative close, relative volatility and relative volume. These data points are visualized in a discreet data dashboard form, next to all real-time bars. Each value also has a dot in front, representing color coded extremes in the values.
Relative close represents position of bar's close relative to high and low, high of bar being 100% and low of bar being 0%. Relative close indicates strength of bulls/bears in a given bar, the higher the better for bulls, the lower the better for bears. Relative volatility (bar range, high - low) and relative volume are presented in a form of a multiplier, relative to their respective moving averages (SMA 20). A value of 1x indicates volume/volatility being on par with moving average, 2x indicates volume/volatility being twice as much as moving average and so on. Relative volume and volatility can be used for measuring general market participant interest, the "weight of the bar" as it were.
— Features
Users can gauge past bar metrics using lookback via input menu. Past bars, especially recent ones, are helpful for giving context for current bar metrics. Lookback bars are highlighted on the chart using a yellow box and metrics presented on the data dashboard with lookback symbols:
To inspect bar metric data and its implications, users can highlight bars with specified bracket values for each metric:
When bar highlighter is toggled on and desired bar metric values set, alert for the specified combination can be toggled on via alert menu. Note that bar highlighter must be enabled in order for alerts to function.
— Visuals
Bar metric dots are gradient colored the following way:
Relative volatility & volume
0x -> 1x / Neutral (white) -> Light (yellow)
1x -> 1.7x / Light (yellow) -> Medium (orange)
1.7x -> 2.4x / Medium (orange) -> Heavy (red)
Relative close
0% -> 25% / Heavy bearish (red) -> Light bearish (dark red)
25% -> 45% / Light bearish (dark red) -> Neutral (white)
45% - 55% / Neutral (white)
55% -> 75% / Neutral (white) -> Light bullish (dark green)
75% -> 100% / Light bullish (dark green) -> Heavy bullish (green)
All colors can be adjusted via input menu. Label size, label distance from bar (offset) and text format (regular/stealth) can be adjusted via input menu as well:
— Practical guide
As interpretation of bar metrics is highly contextual, it is especially important to use other means in conjunction with the metrics. Levels, oscillators, moving averages, whatever you have found useful for your process. In short, relative close indicates directional bias and relative volume/volatility indicates "weight" of directional bias.
General interpretation
High relative close, low relative volume/volatility = mildly bullish, bias up/consolidation
High relative close, medium relative volume/volatility = bullish, bias up
High relative close, high relative volume/volatility = exuberantly bullish, bias up/down depending on context
Medium relative close, low relative volume/volatility = noise, no bias
Medium relative close, medium to high relative volume/volatility = indecision, further evidence needed to evaluate bias
Low relative close, low relative volume/volatility = mildly bearish, bias down/consolidation
Low relative close, medium relative volume/volatility = bearish, bias down
Low relative close, high relative volume/volatility = exuberantly bearish, bias down/up depending on context
Nuances & considerations
As to relative close, it's important to note that each bar is a trading range when viewed on a lower timeframe, ES 1W vs. ES 4H:
When relative close is high, bulls were able to push price to range high by the time of close. When relative close is low, bears were able to push price to range low by the time of close. In other words, bulls/bears were able to gain the upper hand over a given trading range, hinting strength for the side that made the final push. When relative close is around middle range (40-60%), it can be said neither side is clearly dominating the range, hinting neutral/indecision bias from a relative close perspective.
As to relative volume/volatility, low values (less than ~0.7x) imply bar has low market participant interest and therefore is likely insignificant, as it is "lacking weight". Values close to or above 1x imply meaningful market participant interest, whereas values well above 1x (greater than ~1.3x) imply exuberance. This exuberance can manifest as initiation (beginning of a trend) or as exhaustion (end of a trend):
Vision Essentials - RSIVision Essentials - RSI is the first indicator from our essentials pack we have planned. It's our twist on the highly popular RSI (Relative Strength Index) Oscillator.
What makes this indicator different?
Based on community feedback we provided users with a visual + adjustable oversold and overbought range to avoid having to redraw boxes during session. Adjusting the settings will update the box positioning on the chart to match.
We utilize custom inputs to allow users to select HA based open, high, low, and close as well as the usual open, high, low, close, hl2, hlc3, and ohlc4 inputs (more coming soon)
The indicator will track the values of the recent high & low points of the RSI based on the distance setting. These values are displayed as text floating at the end of the pane, as well as plotted lines for a visual of the past and current high/low points
The user has complete customization of the color schemes used by: The oversold box, the overbought box, the RSI lower color, the RSI higher color, the recent low color, the recent high color, and the text color. The user can also control the distance that is utilized for finding the recent High & Low points.
How do I use this indicator?
To start using this indicator simply apply it to your chart. We use pre-defined values matching the most common RSI configuration however, you're encouraged to view the settings to fully understand how to adjust the various settings as well as learn how the indicator changes under each individual setting.
RSI Source - This is the input source the RSI calculation is based on. Close is the most common, and default which utilizes the closing price of candles
RSI Length - This setting provides the indicator the length (distance) you want the RSI outlook to be based on. The most common is a 14-day timeframe, but keep in mind that the value of 14 on a 15min chart isn't the same as the value of 14 on a 1day chart. The simple way to view this setting is to consider how many candles back you want the calculation to be based on
RSI Oversold - This setting is considered the "low" level of the RSI. 30 is the most common setting. The lower the RSI, the more momentum that is considered to be in place
RSI Overbought - This setting is considered the "high" level of the RSI. 70 is the most common setting. The higher the RSI, the more momentum that is considered to be in place
High/Low Distance - This setting defines the number of candles back that the indicator will look to determine the recent high/low values
Visual Style - Gradient provides you with a gradient fill between 2 RSI lines. The first is the root RSI based on your RSI settings, and the second is a doubled value which creates the fill gap. Gradient + Highlight is the same as Gradient, but enables coloring on the root RSI edge of the gradient. Highlight Only provides you with a single line based on your RSI settings
Highlight Color - This setting controls the color of your root RSI plot when using one of the highlight based Visual Styles
RSI Lower - This setting controls the color used by the indicator when the RSI value is on the lower end of the spectrum
RSI Higher - This setting controls the color used by the indicator when the RSI value is on the higher end of the spectrum
Recent Low Color - This setting controls the color used by the indicator for plotting the recent low line
Recent High Color - This setting controls the color used by the indicator for plotting the recent high line
Text Color - This setting controls the text color used for the recent high low values at the end of the pane
EP/SL and ratio calculationExplanation of the indicator
The first question is - what is shown here at all. Generally, the indicator calculates order prices depending on the data found in the chart. The order is based on the lowest low (for a long) of the bounce and the high of the last candle. For a short it is based on the highest high and on the low of the last candle. There is no value for you, if you don’t do swing trading using trend lines on your chart.
All values shown are no financial advise - you are responsible for all your trades.
The indicator looks for the lowest low of the last days. How many days back to be searched can be configured in the settings. The lowest low is marked with the flag - the date and price is displayed there.
The high of the last candle is read out and based on this the entry price is calculated. On the green line are the EP percentages with which is calculated, the entry price and also the high of the last candle displayed.
On the line there is a green (or red) triangle, which indicates the trading direction. More about the direction can be found below in the settings.
Based on the lowest low (or in case of short the highest high) the stop loss is calculated. Also here the percentage and the price is given.
The lines labeled R1 to R5 are the prices of the respective ratios. The lines are 40 time units long (in the standard setting) and thus one can read off the ratio, which the trade would reach after approx. 8 weeks, over the trend lines and their intersection point at the end of the ratio lines.
The orange line marks the point at which we would be 10% above the entry price (or below the entry price for a short).
In general, the calculations are equivalent for short, the marker of the highest high is displayed.
The capital and the number of shares to be traded are not publicly displayed on the chart. The complete calculation is visible when you move the mouse over the text of the entry price.
In this small pop-up window you can see with which capital the calculation was done. The capital should be updated daily in the settings. Furthermore, you can see how many shares can be traded with this capital, taking into account the 1% portfolio risk. It is again the entry price and a proposal for a stop limit price (percentages also configurable) displayed. The price for the 3 ratio (take profit) and also the price for the stop loss can be read here. So actually everything that is necessary for the creation of the order.
Settings
The indicator now has a lot of settings and options. I have also built-in indicators such as EMA and JMA to have all the indicators necessary for me - with the free TV. Some things can also be changed under "Style", but I don't want to go into the things under "Style" here, just the basic settings.
Settings of the main indicator
With the checkmark at "Main Indicator" all lines etc. can be switched off without the other indicators (EMA, JMA) disappearing.
Capital:
Here you can set your daily capital (from paper trading or from the real money deposit). This is used to calculate the number of shares.
Search last bounce in last x candles:
Here you can influence how many candles the tool should look into the past to search for the lowest (long) or highest (short) candle. Default is 10, but sometimes shorter or longer periods make sense. It is also possible to tune a bit here and e.g. with "0" make the calculation of the SL based on the low/high of the last candle. Which low (long) or high (short) is taken, is always evident with the above described flag.
go back x candles for calculation:
If the calculation is not to be made on the basis of the last candle, but e.g. the one before last, this can be adjusted here. Everything is adapted with, thus e.g. also the Stochastic of this time is used for the direction. One can go back in time and reconstruct the calculation at that time.
EP percent:
Specifying how far the EP should be from the high (long)/low (short) of the last candle.
EP limit percent:
Specify how far the EP limit should be from the EP.
SL percent:
Specifying how far the SL should be from the lowest low (long)/highest high (short).
direction mode:
here is set in which way the indicator should be directed long or short. The stochastic used here has the settings 8-5-5. k is the blue line and d is the red line of this stochastic.
Stoch k>d = long automatic, blue line above the red line for long calculation
Stoch k<50% = long automatic, blue line below 50% for long calculation
long no automatic, always long calculation
short no automatic, always short calculation
ignore last candle if market is open:
Normally one calculates at closed market, thus on the finished candles. If you want to calculate with an open market or if you want to make sure that the indicator is not constantly running back and forth after the market has opened, you can automatically ignore the last candle (i.e. calculate on the second to last candle) if the market is open. If the market is closed, the last candle is always taken. If turned off, the last candle is always taken even if the market is open.
use close price for EP (instead of high/low):
You can adjust the EP calculation here to take the close price instead of the high/low of the last candle. This is not the usual strategy, but if there are long wicks/luns and you are quite sure with the trading direction, this can improve the ratio significantly.
Ratio lines length (bars):
The length of the lines. You can change here for 3M/6M trades to 80 time units.
Text color:
Color of the text (default is gray, this is kind of useful for white and black background).
Line color R-lines:
Color of the ratio lines (default is gray)
10% color:
Color of the 10% line (default orange)
Additional indicators settings
EMAs:
Here you can switch on/off all EMA lines
xx EMA Length:
Configuration of the individual EMA lines to be displayed. At 0 the line is switched off, colors are configured at the style.
JMA:
Here you can additionally display the JMA. Also its colors can be configured at Style.
JMA length:
JMA length, default 20, phase is fixed at 50 and power is fixed at 2.
coates moving averages (cma)This indicator uses three moving averages:
2 period low simple ma
2 period high simple ma
9 period least squares ma
The trend is determined by the angle of the moving averages, current close relative the the 9 least squares ma (lsm) and the current close relative to the prior two periods high and low.
When there are consecutive closes inside the prior two candles high and low then a range is signaled:
In ranges the buy zone is between the lowest low and the lowest close of the current range. The sell zone is between the highest high and the highest close. The zones are adjusted as long as the new close is within the prior two candles range:
When price closes above the 2 high ma and the 9 lsm then a bull trend is signaled if all moving averages are angled upward (as seen at #4 in the chart above and #1 the chart below ). If the 9 lsm and / or the 2 low ma continue to angle downward, following a close above the 2 high ma and 9 lsm, then a prolonged range or reversal is expected (#2 in the chart below):
During a bull trend the buy zone is between the 2 low ma and the 9 lsm. The profit target is the 2 high ma:
During dip buying opportunities price should resist closing below the 9 lsm. If there is one close below the 9 lsm then it is a canary in the coalmine that tells us to proceed with caution. This will often signal a range, based on the conditions outlined above. To avoid a prolonged range, or reversal, price needs to immediately react in the direction of the prevailing trend:
If the moving averages are angled down and the most recent close is below the 2 low ma and 9 lsm then trend is fully bearish:
During a bear trend the short zone is between the 2 high ma and 9 lsm. The profit target is the 2 low ma:
When the 2 high ma angles down and the 2 low ma angles up while price closes inside both mas then it indicates a cma squeeze:
Volatility is expected in the direction of the breakout following the squeeze. In this situation traps / shakeouts are common. If there is a wick outside the cma, with a close inside, then it indicates a trap / shakeout. If there is a close outside the 2 high / low ma then it signals a breakout.
A trend is considered balanced when the 9 lsm is roughly equidistant from the 2 low and 2 high mas. If the 9 lsm crosses the 2 high or 2 low ma then it signals exhaustion / imbalance.
For a stop loss I use the prior three periods low, for bull trends, and the prior three periods high for bear trends. I would expect other reliable stops, such as the parabolic sar or bill williams fractal, to be effective as well. The default moving averages should be very effective on all timeframes and assets classes, however this indicator was developed for bitcoin with a focus on higher timeframes such as the 4h, daily and weekly.
As with any other technical indicator there will be bad signals. Proceed with caution and never risk more than you are willing to lose.
MAPS - HiLo DivergenceThe High/Low indicator utilizes the measuring of local highs and lows as well as local peaks and troughs to identify possible divergence in the price action.
Purple oscillator = Higher Timeframe's price measurement
Purple high triangle = A local high on the higher timeframe has been made
Purple low triangle = A local low on the higher timeframe has been made
Red high triangle on the purple oscillator = A local high on the higher timeframe has been made and is deemed a bearish divergent high
Green low triangle on the purple oscillator = A local low on the higher timeframe has been made and is deemed a bullish divergent low
Orange oscillator = Current Timeframe's price measurement
Orange high triangle = A local high on the current timeframe has been made
Orange low triangle = A local low on the current timeframe has been made
Red high triangle on the orange oscillator = A local high on the current timeframe has been made and is deemed a bearish divergent high
Green low triangle on the orange oscillator = A local low on the current timeframe has been made and is deemed a bullish divergent low
20 Pips & Dip™ Indicator20 Pips & Dipp script based on a few different indicators which together provides powerful help for all level of traders, especially beginners. Also, script have toggles to switch on/off: Renko Reversal, EMA, HHLL, Support/Resistance, Daily Open modules.
1st Module – Renko Reversal Alerts Indicator. The Indicator point out a spot where the revers are happens. Any changes in Price that do not reach a minimum amount are usually filtered. This helps to keep attention on larger, significant moves, and helps not to avoid the minute fluctuations in the market.
How it’s works?
- ENTER a trade JUST AFTER 1 Renko brick is printed. BUY triangle (green buy text with green triangle) is generated if a bearish Renko Brick is followed by a bullish brick. In other words, a buy signal happens when a white block is drawn after a black one. The buy happens then at the closing price that may be higher than the top of the last brick. It can go two bricks up minus a tick or pip.
- EXIT that trade, and open a new reverse position, just after 1 Renko brick is printed in the opposite direction. SELL triangle (red sell text with red triangle) is generated if a bullish brick is followed by a bearish brick. In other words, a sell signal happens when a black block is drawn, after a white block. The same situation as with a buy signal happens on sell signals. There is an uncertainty on the close price that may go as far as one tick above the next potential bearish block.
How to create custom ALERTS? Right click on a sell or buy triangle > Add Alert > 20 Pips & Dipp > Choose between Long or Short opportunity. In options field choose ONCE PER BAR. All other options you can choose according to your personal needs. If you want alert for another option (i.e. Short opportunity) just add one more.
Just to know! To understand how those module work better to switch to Renko chart. But Renko Chart with Renko brick size & Timeframe less than 1 day available only for PRO+ accounts and better. Also, we need to say that TradingView platform do not provide TICK data as we know. So, it may confuse you. Be careful!
2nd Module – Moving Average Exponential. The exponential moving average (EMA) is a weighted moving average (WMA) that gives more weighting, or importance, to recent price data than the simple moving average (SMA) does. The EMA responds more quickly to recent price changes than the SMA. The formula for calculating the EMA just involves using a multiplier and starting with the SMA. Like all moving averages, this technical indicator is used to produce buy and sell signals based on crossovers and divergences from the historical average. By default, our EMA have 50 period. The 50 moving average is the standard swing-trading moving average and very popular. Most traders use it to ride trends because it’s the ideal compromise between too short and too long term. Some people call it medium-term.
How to use it? EMAs are commonly used in conjunction with other indicators to confirm significant market moves and to gauge their validity. For traders who trade intraday and fast-moving markets, the EMA is more applicable. Quite often, traders use EMAs to determine a trading bias. For example, if an EMA on a daily chart shows a strong upward trend, an intraday trader’s strategy may be to trade only from the long side on an intraday chart.
Limitations of EMA! An EMA relies wholly on historical data. Many people believe that markets are efficient - that is, that current market prices already reflect all available information. If markets are indeed efficient, using historical data should tell us nothing about the future direction of asset prices.
3rd Module - Pivot Points (High/Low). Also known as Bar Count Reversals, are used to anticipate potential price reversals. Pivot Point Highs are determined by the number of bars with lower highs on either side of a Pivot Point High. Pivot Point Lows are determined by the number of bars with higher lows on either side of a Pivot Point Low. Default period is 10.
How this indicator works? The longer the trend (the higher the period selected) before and after the Pivot Point, the more significant the Pivot Point. Pivot Points can be used to help determine where to draw trendlines in order to visualize price patterns.
Calculation! Pivot Point Highs are determined by the number of bars with lower highs on either side of a Pivot Point High. Pivot Point Lows are determined by the number of bars with higher lows on either side of a Pivot Point Low.
4th Module - Higher High Lower Low indicator. Higher high and higher lows and Lower lows and lower highs are trends in a chart. Stocks in general never go up or down in linear fashion, every rise is followed by correction and then again it may either go up or down, same is true for downtrend every fall is followed by a correction in the upward direction and then new downtrend or uptrend is followed. After every rise, the stock took breather corrected to some extent and then new uptrend began, when you see the correction every low is higher than the previous lows and every next peak is higher than it’s previous peak. This is higher highs and higher lows trend.
How it’s work? This script finds pivot highs and pivot lows then calculates Higher Highs, Higher Lows & Lower Lows, Lower Highs. And it calculates support/resistance by using HH-HL-LL-LH points. Generally, HH and HL shows up-trend, LL and LH shows down-trend. If price breaks resistance levels it means the trend is up or if price breaks support level it means the trend is down, so the script can change bar colour blue or black by default. if there is up-trend then bar colour is blue, or if down-trend then bar colour is black. Support and resistance levels change dynamically.
Trick! If you use smaller numbers for Left Hand/Right Hand sides then it will be more sensitive!
5th Module - Daily Open Price. The opening price is the price at which a security first trades upon the opening of an exchange on a trading day; for example, the New York Stock Exchange (NYSE) opens at precisely 9:30 a.m. Eastern time. The price of the first trade for any listed stock is its daily opening price. The opening price is an important marker for that day's trading activity, particularly for those interested in measuring short-term results such as day traders.
Important! If daily open price was higher than current price, crosses will be red. And if daily open price lower than current price crosses will be green. Colours change dynamically.
You need to know it! An opening price is not identical to the previous day's closing price. There are several day-trading strategies based on the opening price of a market or security. Research “Gap Fade and Fill” or “Fade”.
Author – Christian Kopachelli . Huge thanks and credits to peoples which ideas, formulas, calculations, code snippets and code parts were used: Robert Nance, CryptoJoncis , FritzHaber , vacalo69 , Molle de Jong, Baris Yakut, LonesomeTheBlue , ChrisMoody , Robert N. ~~~ THANK you all! You are awesome!
DISCLAIMER! RISK WARNING!
PAST PERFORMANCE IS NOT NECESSARILY INDICATIVE OF FUTURE RESULTS. TRADERS SHOULD NOT BASE THEIR DECISION ON INVESTING IN ANY TRADING PROGRAM SOLELY ON THE PAST PERFORMANCE PRESENTED, ADDITIONALLY, IN MAKING AN INVESTMENT DECISION, TRADERS MUST ALSO RELY ON THEIR OWN EXAMINATION OF THE PERSON // OR ENTITY MAKING THE TRADING DECISIONS.
Time Liquidity a Zulu Kilo indicatorTime Liquidity (Daily/Weekly/Monthly/Quarterly/Yearly) — New York Time (ET)
Time Liquidity is a calendar-based “liquidity map” that tracks highs and lows for the current Day / Week / Month / Quarter / Year (using America/New_York time). When each period completes, its high/low becomes a persistent liquidity level that extends forward until price takes it—helping you quickly see where prior time-based liquidity is still “untouched.”
This is not a trading strategy and does not place trades. It is a context + levels tool designed to help you plan, frame targets, and monitor which higher-timeframe highs/lows remain in play.
What it plots:
1) Current period range boxes (optional)
-A live “bounding box” for the active D / W / M / Q / Y period, updating as new highs/lows form. This gives you better perspective
-Per-timeframe visibility controls and opacity controls.
2) Historical liquidity lines (optional)
-When a period rolls over, the completed period’s High (▲) and Low (▼) are projected forward as liquidity lines.
-Each line remains active until price breaches it (high taken when price trades above; low taken when price trades below).
-Tags identify the source timeframe (D/W/M/Q/Y) and side (high/low).
3) NeoHUD (optional)
-A compact panel showing the nearest next “untaken” liquidity above and below current price for each timeframe.
-Useful for quickly answering: “What’s the closest higher-timeframe high above me?” and “What’s the closest low below me?”
Time / session logic (important)
-All calendar boundaries are computed in New York time (America/New_York).
-Week start is Monday 00:00 ET.
-Sunday handling: you can choose whether Sunday merges into Monday (default behavior - This mostly for futures/FX markets) or is treated as a separate day (useful for Bitcoin, etc..).
(Note: This tool is calendar-based, not exchange-session-based. If your market has non-standard sessions/settlement conventions, interpret levels accordingly.)
How to use it (practical workflow)
-Turn on the timeframes you care about (D/W/M/Q/Y).
-Use current boxes to see the active period’s developing range.
-Use historical lines as a “to-do list” of still-untouched highs/lows.
-Watch the NeoHUD to stay oriented on the closest remaining liquidity above/below price (per timeframe).
For a cleaner chart or faster performance, reduce:
-Max Historical Liquidity Lines Kept / TF
-The number of enabled timeframes
-Glow/frame effects and/or boxes
Limitations / transparency
This indicator does not predict direction or guarantee outcomes; it only visualizes time-based highs/lows and whether they have been taken.
On very low timeframes or long histories, TradingView object limits may apply; use the settings above to manage chart load.
No alerts are included in this script (levels are intended for visual decision support).
Risk notice
Trading involves risk. This tool is provided for educational and informational purposes only and should not be used as the sole basis for trading decisions.
Market Structure Pivots with BOS & CHoCH [zazenio]What is Market Structure?
Market structure is simply the pattern of highs and lows that price creates as it moves. When you look at any chart, you'll notice price doesn't move in a straight line — it swings up, pulls back, swings up again (in an uptrend), or the opposite in a downtrend.
These swing points — the peaks and valleys — are what traders call pivots . Identifying them correctly is the foundation of understanding where a market has been and where it might go next.
What This Indicator Does
Swing Pivots automatically marks these peaks and valleys on your chart so you don't have to draw them manually. It works on any market — stocks, crypto, forex, futures, indices — and on any timeframe.
Beyond just marking pivots, this indicator also draws BOS (Break of Structure) and CHoCH (Change of Character) lines — two essential concepts that help you understand when a trend is continuing or potentially reversing.
How Pivots Are Detected
This indicator confirms pivots based on price structure, not a fixed bar count.
Here's how it works:
A swing high is confirmed when price breaks below the previous swing low. At that moment, we know the high was real — price tried to go higher, failed, and reversed. The market "proved" that level was a genuine turning point.
A swing low is confirmed when price breaks above the previous swing high. The same logic applies — price tried to go lower, failed, and reversed direction.
This creates a natural alternation: high, low, high, low. Each pivot is validated by the market's actual behavior, not by waiting for an arbitrary number of bars to pass.
Understanding BOS and CHoCH
Once you can identify pivots, the next step is understanding what happens when price breaks through them. This is where BOS and CHoCH come in.
BOS (Break of Structure)
A Break of Structure occurs when price continues in the direction of the current trend by breaking a previous pivot level.
In an uptrend : Price breaks above a previous swing high → This signals strength. Buyers are pushing price to new highs, and the trend is likely to continue.
In a downtrend : Price breaks below a previous swing low → This signals weakness. Sellers are pushing price to new lows, and the trend is likely to continue.
Think of BOS as the market saying "the trend is still intact." Each BOS confirms that the dominant side (buyers or sellers) remains in control.
CHoCH (Change of Character)
A Change of Character occurs when price breaks a pivot level in the opposite direction of the current trend. This is an early warning signal that the trend may be reversing.
In an uptrend : Price breaks below a previous swing low → This is unexpected. In a healthy uptrend, lows should hold. When they don't, it suggests buyers are losing control and sellers may be taking over.
In a downtrend : Price breaks above a previous swing high → This is unexpected. In a healthy downtrend, highs should hold. When they don't, it suggests sellers are losing control and buyers may be stepping in.
Think of CHoCH as the market's behavior "changing character" — it's no longer acting the way it should if the trend were healthy.
Why BOS and CHoCH Matter
These concepts give you a framework for reading what the market is actually doing:
BOS tells you the trend is continuing — stay with it or look for entries in that direction
CHoCH warns you the trend may be ending — time to be cautious, take profits, or look for trades in the new direction
By visualizing these breaks directly on your chart, you don't have to guess. You can see at a glance whether the market is trending smoothly (consecutive BOS) or showing signs of reversal (CHoCH).
Why This Approach Works
Most pivot indicators use a "lookback" method — they wait for a certain number of bars (say, 5 or 10) on each side of a candle before confirming it as a pivot. This creates a fixed delay. By the time the pivot appears on your chart, price has already moved on.
This indicator doesn't wait. It confirms pivots the moment price structure proves them. The result is pivots that align with how traders actually read charts — based on breaks of structure, not arbitrary countdowns.
Settings
Configuration
Swing Width : Controls how sensitive the detection is. Higher numbers show only major swings; lower numbers capture smaller moves within the structure.
Pivot Settings
High/Low Color : Customize the colors of swing high and swing low markers
Style : Choose between Triangle or Circle markers
Size : Adjust the size of pivot markers (Auto, Tiny, Small, Normal)
Structure Lines
Show CHoCH : Toggle Change of Character lines on/off
CHoCH Color : Customize the color of CHoCH lines
CHoCH Label : Show/hide the "CHoCH" text label
Show BOS : Toggle Break of Structure lines on/off
BOS Color : Customize the color of BOS lines
BOS Label : Show/hide the "BOS" text label
Use Cases
See the "skeleton" of price action at a glance
Identify potential support and resistance levels
Understand if the market is trending or ranging
Spot trend continuations with BOS lines
Catch early reversal signals with CHoCH lines
Build a foundation for more advanced trading strategies
━━━━━━━━━━━━━━━━━━━━━━
Version History
v1.1
Added BOS (Break of Structure) lines to visualize trend continuation
Added CHoCH (Change of Character) lines to identify potential trend reversals
Added toggle options for BOS and CHoCH visibility
Added customizable colors for structure lines
Added optional labels for BOS and CHoCH
v1.0
Initial release
Automatic swing high and swing low detection
Structure-based pivot confirmation (not fixed lookback)
Customizable pivot markers (style, size, colors)
Adjustable swing width sensitivity
━━━━━━━━━━━━━━━━━━━━━━
Disclaimer:
This script is provided for educational and informational purposes only. It is not financial advice and does not constitute a recommendation to buy or sell any financial instrument. Always do your own research and trade at your own risk.
Liquidity Sweep + FVG Entry Model//@version=5
indicator("Liquidity Sweep + FVG Entry Model", overlay = true, max_labels_count = 500, max_lines_count = 500)
// Just to confirm indicator is loaded, always plot close:
plot(close, color = color.new(color.white, 0))
// ─────────────────────────────────────────────
// PARAMETERS
// ─────────────────────────────────────────────
len = input.int(5, "Liquidity Lookback")
tpMultiplier = input.float(2.0, "TP Distance Multiplier")
// ─────────────────────────────────────────────
// LIQUIDITY SWEEP DETECTION
// ─────────────────────────────────────────────
lowestPrev = ta.lowest(low, len)
highestPrev = ta.highest(high, len)
sweepLow = low < lowestPrev and close > lowestPrev
sweepHigh = high > highestPrev and close < highestPrev
// Plot liquidity levels
plot(lowestPrev, "Liquidity Low", color = color.new(color.blue, 40), style = plot.style_line)
plot(highestPrev, "Liquidity High", color = color.new(color.red, 40), style = plot.style_line)
// ─────────────────────────────────────────────
// DISPLACEMENT DETECTION
// ─────────────────────────────────────────────
bullDisp = sweepLow and close > open and close > close
bearDisp = sweepHigh and close < open and close < close
// ─────────────────────────────────────────────
// FAIR VALUE GAP (FVG)
// ─────────────────────────────────────────────
bullFVG = low > high
bearFVG = high < low
// we’ll store the last FVG lines
var line fvgTop = na
var line fvgBottom = na
// clear old FVG lines when new one appears
if bullFVG or bearFVG
if not na(fvgTop)
line.delete(fvgTop)
if not na(fvgBottom)
line.delete(fvgBottom)
// Bullish FVG box
if bullFVG
fvgTop := line.new(bar_index , high , bar_index, high , extend = extend.right, color = color.new(color.green, 60))
fvgBottom := line.new(bar_index , low, bar_index, low, extend = extend.right, color = color.new(color.green, 60))
// Bearish FVG box
if bearFVG
fvgTop := line.new(bar_index , low , bar_index, low , extend = extend.right, color = color.new(color.red, 60))
fvgBottom := line.new(bar_index , high, bar_index, high, extend = extend.right, color = color.new(color.red, 60))
// ─────────────────────────────────────────────
// ENTRY, SL, TP CONDITIONS
// ─────────────────────────────────────────────
var line slLine = na
var line tp1Line = na
var line tp2Line = na
f_deleteLineIfExists(line_id) =>
if not na(line_id)
line.delete(line_id)
if bullDisp and bullFVG
sl = low
tp1 = close + (close - sl) * tpMultiplier
tp2 = close + (close - sl) * (tpMultiplier * 1.5)
f_deleteLineIfExists(slLine)
f_deleteLineIfExists(tp1Line)
f_deleteLineIfExists(tp2Line)
slLine := line.new(bar_index, sl, bar_index + 1, sl, extend = extend.right, color = color.red)
tp1Line := line.new(bar_index, tp1, bar_index + 1, tp1, extend = extend.right, color = color.green)
tp2Line := line.new(bar_index, tp2, bar_index + 1, tp2, extend = extend.right, color = color.green)
label.new(bar_index, close, "BUY Entry\nFVG Retest\nSL Below Sweep",
style = label.style_label_up, color = color.new(color.green, 0), textcolor = color.white)
if bearDisp and bearFVG
sl = high
tp1 = close - (sl - close) * tpMultiplier
tp2 = close - (sl - close) * (tpMultiplier * 1.5)
f_deleteLineIfExists(slLine)
f_deleteLineIfExists(tp1Line)
f_deleteLineIfExists(tp2Line)
slLine := line.new(bar_index, sl, bar_index + 1, sl, extend = extend.right, color = color.red)
tp1Line := line.new(bar_index, tp1, bar_index + 1, tp1, extend = extend.right, color = color.green)
tp2Line := line.new(bar_index, tp2, bar_index + 1, tp2, extend = extend.right, color = color.green)
label.new(bar_index, close, "SELL Entry\nFVG Retest\nSL Above Sweep",
style = label.style_label_down, color = color.new(color.red, 0), textcolor = color.white)
Quantum Expansion Engine MTF# 🎯 QUANTUM EXPANSION ENGINE MTF
## *Your Unfair Advantage in the Markets*
---
## 🔥 WHAT IS THIS BEAST?
Welcome to the **Quantum Expansion Engine MTF** - the most advanced multi-timeframe market scanner that separates winners from losers. This isn't just another indicator. This is your personal trading radar that scans multiple markets simultaneously and tells you EXACTLY:
✅ **WHICH** market to trade (ranked by opportunity)
✅ **WHICH** direction to trade (BUY or SELL)
✅ **WHEN** to enter (price location analysis)
✅ **WHERE** to take profit (probability-based targets)
While other traders are guessing, you'll know **with mathematical precision** where the best opportunities are hiding.
---
## 💎 WHY THIS CHANGES EVERYTHING
### **The Problem with Traditional Trading:**
- You stare at ONE chart, hoping it moves
- You have NO IDEA if better opportunities exist elsewhere
- You chase moves that already happened
- You miss the REAL winners because you weren't watching
### **The Quantum Solution:**
✨ Scans **8+ markets simultaneously** in real-time
✨ Uses **multi-timeframe analysis** (4H for direction, current TF for entry)
✨ Calculates **expansion potential** using ADR (Average Daily Range) and ATR
✨ Ranks opportunities from **BEST to WORST**
✨ Shows you **exact entry zones** with color-coded price location
✨ Gives **probability-based profit targets** so you know what's realistic
**Translation:** You'll never trade a dead market again. You'll always be on the HOTTEST movers. 🔥
---
## 🎮 THE CONTROL CENTER: YOUR SETTINGS
### **🎯 Display Filter** (Temperature Control)
Choose what opportunities you want to see:
- **"Show All"** - See everything (beginners start here)
- **"HOT Only"** 🔥 - ONLY the absolute best setups (advanced traders)
- **"WARM Only"** ⚡ - Moderate opportunities
- **"HOT + WARM"** 🔥⚡ - **RECOMMENDED** - Filters out garbage, shows quality
- **"WARM + COLD"** - Everything except hot (not recommended)
**Pro Tip:** Set to **"HOT + WARM"** and only trade what appears. This alone will 10x your win rate.
---
### **📊 Asset Type Filter** (Market Focus)
Focus on what you trade best:
- **"Show All"** - All markets
- **"Forex Only"** 💱 - Currency pairs only (EURUSD, GBPUSD, etc.)
- **"Indices Only"** 📈 - Stock indices (US30, NAS100, SPX500)
- **"Commodities Only"** 🥇 - Gold, Silver, Oil
- **"Forex + Indices"** 💱📈 - Most popular combo
- **"Forex + Commodities"** 💱🥇
- **"Indices + Commodities"** 📈🥇
**Pro Tip:** Forex traders → "Forex Only". Index traders → "Indices Only". Don't mix if you're focused.
---
### **📊 Higher Timeframe (MTF Analysis)**
Default: **240 (4-Hour)**
This is WHERE the magic happens. The engine analyzes trend direction and momentum on a HIGHER timeframe (4H or Daily), then shows you entries on your current timeframe.
**Why This Works:**
- Higher timeframe = stronger trends
- Current timeframe = precise entries
- You trade WITH the big picture, not against it
**Settings to Try:**
- **240 (4H)** - Swing traders, intraday trends
- **D (Daily)** - Position traders, major swings
- **60 (1H)** - Day traders (faster signals)
---
### **🎚️ Thresholds** (Fine-Tuning)
**🔥 HOT Threshold** (Default: 0.0015)
- Higher = stricter (fewer hot signals, higher quality)
- Lower = more generous (more hot signals)
- **Keep at 0.0015** unless you know what you're doing
**⚡ WARM Threshold** (Default: 0.0008)
- Defines the minimum "decent" opportunity
- **Keep at 0.0008** for balanced results
---
### **🎯 Take Profit Settings**
**TP1 Distance:** 250 points (conservative, high probability)
**TP2 Distance:** 500 points (moderate, balanced)
**TP3 Distance:** 1000 points (aggressive, trending markets)
**How to Use:**
- The engine shows **probability %** for each target
- Look for the **🎯 target icon** - that's your recommended exit
- **Green TP (70%+)** = High confidence, take it
- **Yellow TP (50-69%)** = Decent chance
- **Red TP (<50%)** = Low probability, avoid or scale down
**Pro Strategy:** Take 50% profit at TP1, let 50% run to TP2 or TP3. Lock in wins, let winners run.
---
## 🏆 THE QUANTUM TRADING METHOD (STEP-BY-STEP)
### **PHASE 1: SETUP** ⚙️
1. Add indicator to ANY chart (doesn't matter which - it scans all symbols)
2. Set **Display Filter** to **"HOT + WARM"**
3. Set **Asset Type Filter** to your preferred markets
4. Set **Higher Timeframe** to **240** (4H)
5. Position HUD where you like it (Bottom Right recommended)
---
### **PHASE 2: SCAN** 👀
**Every morning or before your trading session:**
1. Open the chart and check the HUD
2. Look at **RANK #1** - This is your BEST opportunity
3. Check its color:
- 🔥 **GREEN (#1)** = Prime setup, highest priority
- ⚡ **YELLOW (#1)** = Good setup, decent opportunity
- ❄️ **RED (#1)** = Market is cold, wait or skip
4. Note the **DIRECTION**: 📈 BUY or 📉 SELL
5. Check **📍LOC%** (price location in daily range)
---
### **PHASE 3: VALIDATE** ✅
**Before entering, confirm these THREE things:**
**✅ CHECK #1: Temperature + Direction Match**
- 🔥 GREEN + 📈 BUY = STRONG
- 🔥 GREEN + 📉 SELL = STRONG
- ⚡ YELLOW = DECENT
- ❄️ RED = SKIP
**✅ CHECK #2: Price Location Makes Sense**
For **📈 BUY** signals, you want:
- 🟢 0-20% = PERFECT (price at lows)
- 🔵 20-40% = GOOD (still low)
- 🟡 40-60% = OKAY (middle, less ideal)
- 🟠 60-80% = RISKY (price high)
- 🔴 80-100% = AVOID (price at highs, don't buy!)
For **📉 SELL** signals, you want:
- 🔴 80-100% = PERFECT (price at highs)
- 🟠 60-80% = GOOD (still high)
- 🟡 40-60% = OKAY (middle, less ideal)
- 🔵 20-40% = RISKY (price low)
- 🟢 0-20% = AVOID (price at lows, don't sell!)
**✅ CHECK #3: Take Profit Probability**
- Look for **GREEN TP** percentages (70%+)
- The **🎯 icon** shows recommended target
- If all TPs are red/low, market may be exhausted
---
### **PHASE 4: EXECUTE** 🎯
**The Entry:**
1. Switch to the specific market (e.g., EURUSD, NAS100)
2. Switch to YOUR entry timeframe (5M, 15M, 1H - whatever you trade)
3. Wait for a pullback/confirmation in your direction
4. Enter with proper risk management (1-2% risk per trade)
**The Stop Loss:**
Use ATR-based stops:
- **Conservative:** 1.5 x ATR below entry (BUY) or above entry (SELL)
- **Aggressive:** 1.0 x ATR
- **Or use structure:** Recent swing high/low
**The Targets:**
Follow the **🎯 recommended TP** from the HUD:
- If **TP1** is recommended → Conservative exit at 250 points
- If **TP2** is recommended → Hold for 500 points
- If **TP3** is recommended → Let it run to 1000 points
**Pro Scaling Strategy:**
- Take 33% profit at TP1
- Take 33% profit at TP2
- Let 33% run to TP3 or trailing stop
---
### **PHASE 5: MONITOR** 📊
**Throughout the day:**
- Check HUD every 1-4 hours for NEW opportunities
- If a HOTTER setup appears, consider moving capital
- The #1 spot can change as markets move
- **Alerts enabled?** You'll get notified automatically! 🔔
---
## 🚀 ADVANCED TECHNIQUES FOR DOMINANCE
### **🔥 THE "HOT ONLY" SNIPER METHOD**
**Settings:**
- Display Filter: **"HOT Only"**
- Asset Filter: Your specialty (Forex/Indices)
- Higher TF: **240** or **D**
**Strategy:**
Only trade when markets appear in the HUD. If nothing shows = NO TRADES TODAY.
**Why This Works:**
You're ONLY trading the absolute best setups. Your win rate will skyrocket because you're ultra-selective. You might only take 2-3 trades per week, but they'll be QUALITY.
---
### **⚡ THE "MULTI-MARKET" SCALPER METHOD**
**Settings:**
- Display Filter: **"HOT + WARM"**
- Asset Filter: **"Show All"**
- Higher TF: **60** (1H)
**Strategy:**
Trade the top 3 opportunities simultaneously. Diversify across markets (one forex, one index, one commodity).
**Why This Works:**
You're not putting all eggs in one basket. If NAS100 is choppy, EURUSD might be trending. Spread risk, increase opportunities.
---
### **📈 THE "SESSION HUNTER" METHOD**
**Settings:**
- Display Filter: **"HOT + WARM"**
- Asset Filter: Changes per session
- Higher TF: **240**
**Strategy:**
- **Asian Session (8PM-4AM EST):** Focus on **"Forex Only"** (JPY pairs)
- **London Session (3AM-12PM EST):** Focus on **"Forex + Indices"** (EUR, GBP, FTSE)
- **NY Session (8AM-5PM EST):** Focus on **"Indices Only"** (US30, NAS100, SPX500)
**Why This Works:**
You trade markets when they're MOST ACTIVE. Asian session = Yen. London = Euro/Pound. NY = Indices. Maximum volatility = maximum profit potential.
---
## 💰 REAL-WORLD EXAMPLE TRADE
**Scenario:** It's 9 AM EST (NY Session Opens)
**Step 1:** Check HUD
```
🔥 1 EURUSD 📈 BUY 0.5995 🟢 8% TP1: 0% TP2: 0% TP3: 0%
⚡ 2 GBPUSD 📈 BUY 0.5992 🟢 5% TP1: 85% TP2: 60% TP3: 45%
```
**Step 2:** Analyze
- **EURUSD** is HOT 🔥 but TPs are 0% (market exhausted for the day)
- **GBPUSD** is WARM ⚡ with STRONG TP probabilities
- **GBPUSD** shows 📈 BUY + 🟢 5% (price near lows) = PERFECT SETUP
**Step 3:** Execute GBPUSD Trade
- Switch to GBPUSD 15-minute chart
- Wait for bullish confirmation (break of resistance, candlestick pattern)
- Enter BUY at 1.2650
- Stop Loss: 1.2620 (30 pips, 1.5x ATR)
- Take Profit #1: 1.2675 (25 pips) ← **TP1 has 85% probability**
- Take Profit #2: 1.2700 (50 pips) ← **TP2 has 60% probability**
**Step 4:** Manage
- Price hits TP1 at 1.2675 → Take 50% profit (+25 pips)
- Move stop loss to breakeven
- Let remaining 50% run to TP2
- Price hits TP2 at 1.2700 → Take remaining profit (+50 pips)
**Result:** +37.5 pips average (25+50/2), ZERO risk after TP1, HIGH probability setup. 💰
---
## 🎯 THE GOLDEN RULES OF QUANTUM TRADING
### **RULE #1: Trust the Temperature 🌡️**
If it's 🔥 GREEN = Trade it
If it's ⚡ YELLOW = Consider it
If it's ❄️ RED = Skip it
The math doesn't lie. Cold markets stay cold. Hot markets MOVE.
---
### **RULE #2: Location, Location, Location 📍**
NEVER buy 📈 at 🔴 80%+
NEVER sell 📉 at 🟢 0-20%
Wait for price to be in the RIGHT zone or walk away.
---
### **RULE #3: Respect the Probabilities 🎲**
If TP shows 25% probability, it's a COIN FLIP.
If TP shows 75% probability, it's FAVORABLE ODDS.
Trade the odds, not emotions.
---
### **RULE #4: Higher Timeframe is BOSS 👑**
The 4H/Daily trend direction is your NORTH STAR.
Don't fight it. Trade WITH it.
---
### **RULE #5: No HUD Signal = No Trade 🚫**
If nothing appears in your filtered view, the markets are DEAD.
Cash is a position. Patience is a strategy.
---
## 🔔 ALERT SETUP (Never Miss a Setup!)
**Enable Alerts:**
1. In settings, turn ON:
- 🔥 **Enable HOT Alerts**
- ⚡ **Enable WARM Alerts** (optional)
2. In TradingView, right-click chart → **Add Alert**
3. Set **Condition:** Your indicator name
4. **Notification:** Phone, Email, SMS - your choice
5. Click **Create**
**What Happens:**
You get notified THE MOMENT a hot opportunity appears. You can be away from computer and still catch setups!
---
## 📊 BEST PRACTICES & PRO TIPS
### **⏰ BEST TIMES TO SCAN:**
- **Pre-Market:** 30 min before major sessions open
- **Session Opens:** London (3 AM EST), NY (9:30 AM EST)
- **Mid-Session:** Check every 2-4 hours
- **Avoid:** Late Friday (low liquidity), major news events (wait for dust to settle)
### **💼 RISK MANAGEMENT:**
- Never risk more than 1-2% per trade
- If #1 and #2 are both 🔥 HOT, split your risk (1% each)
- Use proper position sizing calculators
- **The engine finds setups. YOU manage risk.**
### **🧠 PSYCHOLOGY:**
- **FOMO is the enemy.** If you miss #1, there's always a #2, #3, tomorrow
- **Quality > Quantity.** 3 great trades/week beats 20 mediocre trades
- **The HUD is objective.** Your emotions are not. Trust the system.
### **📈 PERFORMANCE TRACKING:**
Keep a journal:
- What was the rank? (#1, #2, #3)
- What was the temperature? (🔥⚡❄️)
- What was price location? (🟢🔵🟡🟠🔴)
- What was TP probability?
- Did it hit target?
**After 20 trades, patterns emerge.** You'll see what works best for YOUR style.
---
## 🏆 THE COMPETITIVE EDGE
**What 99% of traders do:**
❌ Trade the same pair every day (even when dead)
❌ Guess direction based on "feeling"
❌ Have no idea where to take profit
❌ Miss better opportunities in other markets
❌ Chase moves that already happened
**What YOU now do:**
✅ Trade ONLY the hottest opportunities
✅ Follow mathematically-calculated direction
✅ Use probability-based profit targets
✅ Scan 8+ markets simultaneously
✅ Catch moves BEFORE they happen
**Result?** You're not just "trading better." You're playing a completely different game.
---
## 🚀 YOUR QUANTUM TRADING JOURNEY
**Week 1-2: LEARNING PHASE**
- Keep Display Filter on "Show All"
- Observe how markets move when they're HOT vs COLD
- Paper trade or micro lots
- Build confidence in the system
**Week 3-4: IMPLEMENTATION PHASE**
- Switch Display Filter to "HOT + WARM"
- Start taking real trades on top 1-2 opportunities
- Use conservative TP1 targets
- Track results in journal
**Month 2+: MASTERY PHASE**
- Experiment with different filters for your style
- Increase position sizes as win rate proves itself
- Use advanced multi-market strategies
- Let TP2 and TP3 targets run on high-probability setups
**Month 3+: DOMINATION PHASE**
- You're consistently profitable
- You know which setups are YOUR bread and butter
- You're capitalizing on multiple markets
- You're trading less, earning more
- **You've become the 1%** 👑
---
## 💎 FINAL WORDS
The **Quantum Expansion Engine MTF** is not magic. It's mathematics, probability, and market mechanics working in harmony.
It won't make you rich overnight.
It won't win every trade.
It won't eliminate losses.
**But it WILL:**
✅ Show you WHERE the best opportunities are
✅ Tell you WHICH direction has momentum
✅ Give you REALISTIC profit targets
✅ Keep you OUT of dead markets
✅ Stack the odds in your favor
**The difference between a losing trader and a winning trader isn't talent.**
It's **information, discipline, and execution.**
You now have the information.
The discipline and execution? That's on you.
**Welcome to the Quantum level.**
Now go dominate. 🚀🔥💰
---
## 📞 QUICK REFERENCE CARD
**🔥 HOT** = Score ≥ 0.0015 (TRADE IT)
**⚡ WARM** = Score ≥ 0.0008 (CONSIDER IT)
**❄️ COLD** = Score < 0.0008 (SKIP IT)
**📈 BUY** = Want 🟢🔵 location (low in range)
**📉 SELL** = Want 🟠🔴 location (high in range)
**🎯 TP Icons** = Follow the recommendation
**GREEN TP** = High confidence (70%+)
**YELLOW TP** = Medium confidence (50-69%)
**RED TP** = Low confidence (<50%)
**Best Settings for Beginners:**
- Display Filter: "HOT + WARM"
- Asset Filter: "Forex Only" or "Indices Only"
- Higher TF: 240
- Take TP1 always, let TP2 run sometimes
**Remember:** The market will always be there tomorrow. Only trade when the engine gives you 🔥 or ⚡. Patience pays.
---
*Built for traders who refuse to be average. 🎯*
Cold Brew Ranges🧭 Core Logic and Calculation
The fundamental logic for each range (OR and CR) is identical:
Time Definition: Each range is defined by a specific Start Time and a fixed 30-second duration. The timestamp function, using the "America/New_York" time zone, is used to calculate the exact start time in Unix milliseconds for the current day.
Example: t0200 = timestamp(TZ, yC, mC, dC, 2, 0, 0) sets the start time for the 02:00 OR to 2:00:00 AM NY time.
Range Data Collection: The indicator uses the request.security_lower_tf() function to collect the High (hArr) and Low (lArr) prices of all bars that fall within the defined 30-second window, using a user-specified, sub-chart-timeframe (openrangetime, defaulted to "1" second, "30S", or "5" minutes). This ensures high precision in capturing the exact high and low during the 30-second window.
High/Low Determination: It iteratively finds the absolute highest price (OR_high) and the absolute lowest price (OR_low) recorded by the bars during that 30-second window.
Range Locking: Once the current chart bar's time (lastTs) passes the 30-second End Time (tEnd), the High and Low are locked (OR_locked = true), meaning the range calculation is complete for the day.
Drawing: Upon locking, the range is drawn on the chart using line.new for the High, Low, and Equilibrium, and box.new for the shaded fill. The lines are extended to a subsequent time anchor point (e.g., the 02:00 OR is extended to 08:20, the 09:30 OR is extended to 16:00).
Equilibrium (EQ): This is calculated as the simple average (midpoint) of the High and Low of the range.
EQ=
2
OR_High+OR_Low
⏰ Defined Trading Ranges
The indicator defines and tracks the following specific 30-second ranges:
Range Name Type Start Time (NY) Line Extension End Time (NY) Common Market Context
02:00 OR Opening 02:00:00 08:20:00 Asian/European Market Overlap
08:20 OR Opening 08:20:00 16:00:00 Pre-New York Open
09:30 OR Opening 09:30:00 16:00:00 New York Stock Exchange Open (Most significant OR)
18:00 OR Opening 18:00:00 20:00:00 Futures Market Open (Sunday/Monday)
20:00 OR Opening 20:00:00 Next Day's session start Asian Session Start
15:50 CR Closing 15:50:00 20:00:00 New York Close Range
⚙️ Key User Inputs and Customization
The script offers extensive control over which ranges are displayed and how they are visualized:
Range Time & History
openrangetime: Sets the sub-timeframe (e.g., "1" for 1 second) used to calculate the precise High/Low of the 30-second range. Crucial for accuracy.
showHistory: A toggle to show the ranges from previous days (up to a histCap of 50 days).
Range Toggles and Styling
On/Off Toggles: Independent input.bool (e.g., OR_0200_on) to enable or disable the display of each individual range.
Colors & Width: Separate color and width inputs for the High/Low lines (hlC), the Equilibrium line (eqC), and the background fill (fillC) for each range.
Line Styles: Global inputs for the line styles of High/Low (lineStyleInput) and Equilibrium (eqLineStyleInput) lines (Solid, Dotted, or Dashed).
showFill: Global toggle to enable the shaded background box that highlights the area between the High and Low.
Extensions
The script calculates and plots extensions (multiples of the initial range) above the High and below the Low.
showExt: Toggles the visibility of the extension lines.
useRangeMultiples: If true, the step size for each extension level is equal to the initial range size:
Step=Range=OR_High−OR_Low
If false, the step size is a fixed value defined by stepPts (e.g., 60.0 points, which is a common value for NQ futures).
stepCnt: Determines how many extension levels (multiples) are drawn above and below the range (default is 10).
📈 Trading Strategy Implications
The Cold Brew Ranges indicator is a tool for session-based support and resistance and range breakout/reversal strategies.
Key Support/Resistance: The High and Low of these defined opening ranges often act as strong, predefined price levels. Traders look for price rejection off these boundaries or a breakout with conviction.
Equilibrium (Midpoint): The EQ often represents a fair value for that specific session's opening. Movements away from it are seen as opportunities, and a return to it is common.
Extensions: The range extensions serve as potential profit targets or stronger, layered support/resistance levels if the market trends aggressively after the opening range is set.
The core idea is that the activity in the first 30 seconds of a significant trading session (like the NYSE or a market session open) sets a bias and initial boundary for the trading period that follows.
Session Highs and Lows🔑 Key Levels: Session Liquidity & Structure Mapper
The Key Levels indicator is an essential tool for traders as it automatically plots and projects critical Highs and Lows established during key trading sessions. These levels represent major liquidity pools and define the current market structure, serving as high-probability targets, support, or resistance for the remainder of the trading day.
⚙️ Core Functionality
The indicator operates in two distinct modes, tailored for different asset classes:
1. Asset Class Mode (Toggle)
You can switch between two predefined setups depending on the asset you are trading:
Stock Mode (RTH/ETH): Designed for US stocks and futures (e.g., NQ, ES, YM). It tracks and projects levels for Regular Trading Hours (RTH) (09:30-16:00) and Extended Hours (ETH) (16:00-09:30).
Forex/Default Mode (Asia/London/NY): Designed for global markets (e.g., currency pairs). It tracks and projects levels for the three major liquidity sessions: Asia (19:00-03:00), London (03:00-09:30), and New York (09:30-16:00).
🗺️ Key Levels Mapped
The script continuously tracks and plots the most significant structural levels:
Current Session High/Low: The running high and low of the currently active session.
Previous Session High/Low: The confirmed high and low from the most recently completed session. These are often targeted by market makers.
Previous Day High/Low (PDH/PDL): The high and low of the prior 24-hour day, acting as major structural boundaries and a crucial macro market filter.
🎛️ Advanced Liquidity Management
The indicator is built with specific controls for high-level liquidity analysis:
Extend Through Sweeps (Critical Setting):
OFF (Recommended): The projected line is automatically stopped or deleted the moment the price candle wicks or closes past it. This visually confirms that the liquidity at that level has been "swept" or "mitigated."
ON: The line extends indefinitely, treating the level as simple support/resistance, regardless of interaction.
Previous vs. Current View: You can select a checkbox (e.g., Use PREVIOUS London Level) to hide the current session's running levels and only display the static, confirmed high/low from the prior completed session. This helps declutter the chart and focus only on the confirmed structural levels.
Show Older History: Toggle to keep lines from prior days visible, allowing you to track multi-day structural context.
🎯 Trading Application
The lines plotted by the Key Levels indicator provide immediate, actionable information:
Bias Filter: Use the PDH/PDL to determine the overall market context. Trading above the PDH suggests a bullish bias, while trading below the PDL suggests a bearish bias.
Manipulation/Entry: Wait for price to aggressively sweep a Previous Session High/Low (line stops extending). This often signals a liquidity grab or "manipulation" phase. Look for entries in the opposite direction for the main move (Distribution).
Targets: Key levels (especially unmitigated ones) serve as excellent, objective take-profit targets for active trades.
Volatility Risk PremiumTHE INSURANCE PREMIUM OF THE STOCK MARKET
Every day, millions of investors face a fundamental question that has puzzled economists for decades: how much should protection against market crashes cost? The answer lies in a phenomenon called the Volatility Risk Premium, and understanding it may fundamentally change how you interpret market conditions.
Think of the stock market like a neighborhood where homeowners buy insurance against fire. The insurance company charges premiums based on their estimates of fire risk. But here is the interesting part: insurance companies systematically charge more than the actual expected losses. This difference between what people pay and what actually happens is the insurance premium. The same principle operates in financial markets, but instead of fire insurance, investors buy protection against market volatility through options contracts.
The Volatility Risk Premium, or VRP, measures exactly this difference. It represents the gap between what the market expects volatility to be (implied volatility, as reflected in options prices) and what volatility actually turns out to be (realized volatility, calculated from actual price movements). This indicator quantifies that gap and transforms it into actionable intelligence.
THE FOUNDATION
The academic study of volatility risk premiums began gaining serious traction in the early 2000s, though the phenomenon itself had been observed by practitioners for much longer. Three research papers form the backbone of this indicator's methodology.
Peter Carr and Liuren Wu published their seminal work "Variance Risk Premiums" in the Review of Financial Studies in 2009. Their research established that variance risk premiums exist across virtually all asset classes and persist over time. They documented that on average, implied volatility exceeds realized volatility by approximately three to four percentage points annualized. This is not a small number. It means that sellers of volatility insurance have historically collected a substantial premium for bearing this risk.
Tim Bollerslev, George Tauchen, and Hao Zhou extended this research in their 2009 paper "Expected Stock Returns and Variance Risk Premia," also published in the Review of Financial Studies. Their critical contribution was demonstrating that the VRP is a statistically significant predictor of future equity returns. When the VRP is high, meaning investors are paying substantial premiums for protection, future stock returns tend to be positive. When the VRP collapses or turns negative, it often signals that realized volatility has spiked above expectations, typically during market stress periods.
Gurdip Bakshi and Nikunj Kapadia provided additional theoretical grounding in their 2003 paper "Delta-Hedged Gains and the Negative Market Volatility Risk Premium." They demonstrated through careful empirical analysis why volatility sellers are compensated: the risk is not diversifiable and tends to materialize precisely when investors can least afford losses.
HOW THE INDICATOR CALCULATES VOLATILITY
The calculation begins with two separate measurements that must be compared: implied volatility and realized volatility.
For implied volatility, the indicator uses the CBOE Volatility Index, commonly known as the VIX. The VIX represents the market's expectation of 30-day forward volatility on the S&P 500, calculated from a weighted average of out-of-the-money put and call options. It is often called the "fear gauge" because it rises when investors rush to buy protective options.
Realized volatility requires more careful consideration. The indicator offers three distinct calculation methods, each with specific advantages rooted in academic literature.
The Close-to-Close method is the most straightforward approach. It calculates the standard deviation of logarithmic daily returns over a specified lookback period, then annualizes this figure by multiplying by the square root of 252, the approximate number of trading days in a year. This method is intuitive and widely used, but it only captures information from closing prices and ignores intraday price movements.
The Parkinson estimator, developed by Michael Parkinson in 1980, improves efficiency by incorporating high and low prices. The mathematical formula calculates variance as the sum of squared log ratios of daily highs to lows, divided by four times the natural logarithm of two, times the number of observations. This estimator is theoretically about five times more efficient than the close-to-close method because high and low prices contain additional information about the volatility process.
The Garman-Klass estimator, published by Mark Garman and Michael Klass in 1980, goes further by incorporating opening, high, low, and closing prices. The formula combines half the squared log ratio of high to low prices minus a factor involving the log ratio of close to open. This method achieves the minimum variance among estimators using only these four price points, making it particularly valuable for markets where intraday information is meaningful.
THE CORE VRP CALCULATION
Once both volatility measures are obtained, the VRP calculation is straightforward: subtract realized volatility from implied volatility. A positive result means the market is paying a premium for volatility insurance. A negative result means realized volatility has exceeded expectations, typically indicating market stress.
The raw VRP signal receives slight smoothing through an exponential moving average to reduce noise while preserving responsiveness. The default smoothing period of five days balances signal clarity against lag.
INTERPRETING THE REGIMES
The indicator classifies market conditions into five distinct regimes based on VRP levels.
The EXTREME regime occurs when VRP exceeds ten percentage points. This represents an unusual situation where the gap between implied and realized volatility is historically wide. Markets are pricing in significantly more fear than is materializing. Research suggests this often precedes positive equity returns as the premium normalizes.
The HIGH regime, between five and ten percentage points, indicates elevated risk aversion. Investors are paying above-average premiums for protection. This often occurs after market corrections when fear remains elevated but realized volatility has begun subsiding.
The NORMAL regime covers VRP between zero and five percentage points. This represents the long-term average state of markets where implied volatility modestly exceeds realized volatility. The insurance premium is being collected at typical rates.
The LOW regime, between negative two and zero percentage points, suggests either unusual complacency or that realized volatility is catching up to implied volatility. The premium is shrinking, which can precede either calm continuation or increased stress.
The NEGATIVE regime occurs when realized volatility exceeds implied volatility. This is relatively rare and typically indicates active market stress. Options were priced for less volatility than actually occurred, meaning volatility sellers are experiencing losses. Historically, deeply negative VRP readings have often coincided with market bottoms, though timing the reversal remains challenging.
TERM STRUCTURE ANALYSIS
Beyond the basic VRP calculation, sophisticated market participants analyze how volatility behaves across different time horizons. The indicator calculates VRP using both short-term (default ten days) and long-term (default sixty days) realized volatility windows.
Under normal market conditions, short-term realized volatility tends to be lower than long-term realized volatility. This produces what traders call contango in the term structure, analogous to futures markets where later delivery dates trade at premiums. The RV Slope metric quantifies this relationship.
When markets enter stress periods, the term structure often inverts. Short-term realized volatility spikes above long-term realized volatility as markets experience immediate turmoil. This backwardation condition serves as an early warning signal that current volatility is elevated relative to historical norms.
The academic foundation for term structure analysis comes from Scott Mixon's 2007 paper "The Implied Volatility Term Structure" in the Journal of Derivatives, which documented the predictive power of term structure dynamics.
MEAN REVERSION CHARACTERISTICS
One of the most practically useful properties of the VRP is its tendency to mean-revert. Extreme readings, whether high or low, tend to normalize over time. This creates opportunities for systematic trading strategies.
The indicator tracks VRP in statistical terms by calculating its Z-score relative to the trailing one-year distribution. A Z-score above two indicates that current VRP is more than two standard deviations above its mean, a statistically unusual condition. Similarly, a Z-score below negative two indicates VRP is unusually low.
Mean reversion signals trigger when VRP reaches extreme Z-score levels and then shows initial signs of reversal. A buy signal occurs when VRP recovers from oversold conditions (Z-score below negative two and rising), suggesting that the period of elevated realized volatility may be ending. A sell signal occurs when VRP contracts from overbought conditions (Z-score above two and falling), suggesting the fear premium may be excessive and due for normalization.
These signals should not be interpreted as standalone trading recommendations. They indicate probabilistic conditions based on historical patterns. Market context and other factors always matter.
MOMENTUM ANALYSIS
The rate of change in VRP carries its own information content. Rapidly rising VRP suggests fear is building faster than volatility is materializing, often seen in the early stages of corrections before realized volatility catches up. Rapidly falling VRP indicates either calming conditions or rising realized volatility eating into the premium.
The indicator tracks VRP momentum as the difference between current VRP and VRP from a specified number of bars ago. Positive momentum with positive acceleration suggests strengthening risk aversion. Negative momentum with negative acceleration suggests intensifying stress or rapid normalization from elevated levels.
PRACTICAL APPLICATION
For equity investors, the VRP provides context for risk management decisions. High VRP environments historically favor equity exposure because the market is pricing in more pessimism than typically materializes. Low or negative VRP environments suggest either reducing exposure or hedging, as markets may be underpricing risk.
For options traders, understanding VRP is fundamental to strategy selection. Strategies that sell volatility, such as covered calls, cash-secured puts, or iron condors, tend to profit when VRP is elevated and compress toward its mean. Strategies that buy volatility tend to profit when VRP is low and risk materializes.
For systematic traders, VRP provides a regime filter for other strategies. Momentum strategies may benefit from different parameters in high versus low VRP environments. Mean reversion strategies in VRP itself can form the basis of a complete trading system.
LIMITATIONS AND CONSIDERATIONS
No indicator provides perfect foresight, and the VRP is no exception. Several limitations deserve attention.
The VRP measures a relationship between two estimates, each subject to measurement error. The VIX represents expectations that may prove incorrect. Realized volatility calculations depend on the chosen method and lookback period.
Mean reversion tendencies hold over longer time horizons but provide limited guidance for short-term timing. VRP can remain extreme for extended periods, and mean reversion signals can generate losses if the extremity persists or intensifies.
The indicator is calibrated for equity markets, specifically the S&P 500. Application to other asset classes requires recalibration of thresholds and potentially different data sources.
Historical relationships between VRP and subsequent returns, while statistically robust, do not guarantee future performance. Structural changes in markets, options pricing, or investor behavior could alter these dynamics.
STATISTICAL OUTPUTS
The indicator presents comprehensive statistics including current VRP level, implied volatility from VIX, realized volatility from the selected method, current regime classification, number of bars in the current regime, percentile ranking over the lookback period, Z-score relative to recent history, mean VRP over the lookback period, realized volatility term structure slope, VRP momentum, mean reversion signal status, and overall market bias interpretation.
Color coding throughout the indicator provides immediate visual interpretation. Green tones indicate elevated VRP associated with fear and potential opportunity. Red tones indicate compressed or negative VRP associated with complacency or active stress. Neutral tones indicate normal market conditions.
ALERT CONDITIONS
The indicator provides alerts for regime transitions, extreme statistical readings, term structure inversions, mean reversion signals, and momentum shifts. These can be configured through the TradingView alert system for real-time monitoring across multiple timeframes.
REFERENCES
Bakshi, G., and Kapadia, N. (2003). Delta-Hedged Gains and the Negative Market Volatility Risk Premium. Review of Financial Studies, 16(2), 527-566.
Bollerslev, T., Tauchen, G., and Zhou, H. (2009). Expected Stock Returns and Variance Risk Premia. Review of Financial Studies, 22(11), 4463-4492.
Carr, P., and Wu, L. (2009). Variance Risk Premiums. Review of Financial Studies, 22(3), 1311-1341.
Garman, M. B., and Klass, M. J. (1980). On the Estimation of Security Price Volatilities from Historical Data. Journal of Business, 53(1), 67-78.
Mixon, S. (2007). The Implied Volatility Term Structure of Stock Index Options. Journal of Empirical Finance, 14(3), 333-354.
Parkinson, M. (1980). The Extreme Value Method for Estimating the Variance of the Rate of Return. Journal of Business, 53(1), 61-65.
MTF S/R Array - Full CustomA clean, institutional-style multi-timeframe support and resistance indicator designed for precision trading decisions. Plots previous and current period levels with full customization for backtesting and live trading.
━━━━━━━━━━━━━━━━━━━━━━
WHAT IT PLOTS
━━━━━━━━━━━━━━━━━━━━━━
MONTHLY
- Previous Month High / Low / Close
- Previous Month Highest Closing Price
- Current Month High / Low / Highest Close
WEEKLY
- Previous Week High / Low / Close
- Current Week High / Low
DAILY
- Previous Day High / Low / Close
- Current Day High / Low
SESSIONS (Full Session - EST)
- Asian: 7pm - 4am
- London: 3am - 12pm
- New York: 8am - 5pm
OPENING RANGE
- Monday/Tuesday combined high and low
- Clean box visualization for weekly initial balance
━━━━━━━━━━━━━━━━━━━━━━
WHY THESE LEVELS MATTER
━━━━━━━━━━━━━━━━━━━━━━
Institutions and smart money reference these key levels for:
- Liquidity targets
- Stop hunts
- Reversal zones
- Trend continuation entries
Previous period levels act as magnets for price. Current levels show where the battle is happening now.
━━━━━━━━━━━━━━━━━━━━━━
FULL CUSTOMIZATION
━━━━━━━━━━━━━━━━━━━━━━
Every level type has independent controls:
- Show/Hide Previous and Current separately
- Extend Bars - control how far each level stretches
- Line Width - adjust thickness per level
- Transparency - fade previous levels for clarity
- Colors - separate colors for High/Low vs Close
Additional settings:
- Labels on/off with size and style options
- Info table with position and size controls
- Opening range box transparency and border width
━━━━━━━━━━━━━━━━━━━━━━
HOW TO USE
━━━━━━━━━━━━━━━━━━━━━━
1. Use on lower timeframes (1m, 5m, 15m) to see HTF levels
2. Watch for price reactions at previous period highs/lows
3. Look for session high/low sweeps followed by reversals
4. Use Monday/Tuesday opening range for weekly bias and targets
5. Previous levels extend further back for backtesting context
━━━━━━━━━━━━━━━━━━━━━━
TIPS
━━━━━━━━━━━━━━━━━━━━━━
- Increase "Prev Extend Bars" on monthly/weekly to see levels across more history
- Use higher transparency on previous levels to keep chart clean
- Turn off sessions you don't trade to reduce clutter
- The info table shows all values at a glance - position it where it doesn't block price action
━━━━━━━━━━━━━━━━━━━━━━
BEST FOR
━━━━━━━━━━━━━━━━━━━━━━
- ICT / Smart Money Concepts traders
- Session-based strategies
- Swing traders using HTF levels on LTF entries
- Anyone who wants clean, customizable S/R levels
Works on Forex, Crypto, Stocks, Futures, and Indices.
SR & POI Indicator//@version=5
indicator(title='SR & POI Indicator', overlay=true, max_boxes_count=500, max_lines_count=500, max_labels_count=500)
//============================================================================
// SUPPLY/DEMAND & POI SETTINGS
//============================================================================
swing_length = input.int(10, title = 'Swing High/Low Length', group = 'Supply/Demand Settings', minval = 1, maxval = 50)
history_of_demand_to_keep = input.int(20, title = 'History To Keep', group = 'Supply/Demand Settings', minval = 5, maxval = 50)
box_width = input.float(2.5, title = 'Supply/Demand Box Width', group = 'Supply/Demand Settings', minval = 1, maxval = 10, step = 0.5)
show_price_action_labels = input.bool(false, title = 'Show Price Action Labels', group = 'Supply/Demand Visual Settings')
supply_color = input.color(color.new(#EDEDED,70), title = 'Supply', group = 'Supply/Demand Visual Settings', inline = '3')
supply_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Supply/Demand Visual Settings', inline = '3')
demand_color = input.color(color.new(#00FFFF,70), title = 'Demand', group = 'Supply/Demand Visual Settings', inline = '4')
demand_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Supply/Demand Visual Settings', inline = '4')
bos_label_color = input.color(color.white, title = 'BOS Label', group = 'Supply/Demand Visual Settings')
poi_label_color = input.color(color.white, title = 'POI Label', group = 'Supply/Demand Visual Settings')
swing_type_color = input.color(color.black, title = 'Price Action Label', group = 'Supply/Demand Visual Settings')
//============================================================================
// SR SETTINGS
//============================================================================
enableSR = input(true, "SR On/Off", group="SR Settings")
colorSup = input(#00DBFF, "Support Color", group="SR Settings")
colorRes = input(#E91E63, "Resistance Color", group="SR Settings")
strengthSR = input.int(2, "S/R Strength", 1, group="SR Settings")
lineStyle = input.string("Dotted", "Line Style", , group="SR Settings")
lineWidth = input.int(2, "S/R Line Width", 1, group="SR Settings")
useZones = input(true, "Zones On/Off", group="SR Settings")
useHLZones = input(true, "High Low Zones On/Off", group="SR Settings")
zoneWidth = input.int(2, "Zone Width %", 0, tooltip="it's calculated using % of the distance between highest/lowest in last 300 bars", group="SR Settings")
expandSR = input(true, "Expand SR", group="SR Settings")
//============================================================================
// SUPPLY/DEMAND FUNCTIONS
//============================================================================
// Function to add new and remove last in array
f_array_add_pop(array, new_value_to_add) =>
array.unshift(array, new_value_to_add)
array.pop(array)
// Function for swing H & L labels
f_sh_sl_labels(array, swing_type) =>
var string label_text = na
if swing_type == 1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HH'
else
label_text := 'LH'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_down, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
else if swing_type == -1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HL'
else
label_text := 'LL'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_up, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
// Function to check overlapping
f_check_overlapping(new_poi, box_array, atr) =>
atr_threshold = atr * 2
okay_to_draw = true
for i = 0 to array.size(box_array) - 1
top = box.get_top(array.get(box_array, i))
bottom = box.get_bottom(array.get(box_array, i))
poi = (top + bottom) / 2
upper_boundary = poi + atr_threshold
lower_boundary = poi - atr_threshold
if new_poi >= lower_boundary and new_poi <= upper_boundary
okay_to_draw := false
break
else
okay_to_draw := true
okay_to_draw
// Function to draw supply or demand zone
f_supply_demand(value_array, bn_array, box_array, label_array, box_type, atr) =>
atr_buffer = atr * (box_width / 10)
box_left = array.get(bn_array, 0)
box_right = bar_index
var float box_top = 0.00
var float box_bottom = 0.00
var float poi = 0.00
if box_type == 1
box_top := array.get(value_array, 0)
box_bottom := box_top - atr_buffer
poi := (box_top + box_bottom) / 2
else if box_type == -1
box_bottom := array.get(value_array, 0)
box_top := box_bottom + atr_buffer
poi := (box_top + box_bottom) / 2
okay_to_draw = f_check_overlapping(poi, box_array, atr)
if box_type == 1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = supply_outline_color,
bgcolor = supply_color, extend = extend.right, text = 'SUPPLY', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
box.delete( array.get(label_array, array.size(label_array) - 1) )
f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = color.new(poi_label_color,90),
bgcolor = color.new(poi_label_color,90), extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
else if box_type == -1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = demand_outline_color,
bgcolor = demand_color, extend = extend.right, text = 'DEMAND', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
box.delete( array.get(label_array, array.size(label_array) - 1) )
f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = color.new(poi_label_color,90),
bgcolor = color.new(poi_label_color,90), extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
// Function to change supply/demand to BOS if broken
f_sd_to_bos(box_array, bos_array, label_array, zone_type) =>
if zone_type == 1
for i = 0 to array.size(box_array) - 1
level_to_break = box.get_top(array.get(box_array,i))
if close >= level_to_break
copied_box = box.copy(array.get(box_array,i))
f_array_add_pop(bos_array, copied_box)
mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
box.set_top(array.get(bos_array,0), mid)
box.set_bottom(array.get(bos_array,0), mid)
box.set_extend( array.get(bos_array,0), extend.none)
box.set_right( array.get(bos_array,0), bar_index)
box.set_text( array.get(bos_array,0), 'BOS' )
box.set_text_color( array.get(bos_array,0), bos_label_color)
box.set_text_size( array.get(bos_array,0), size.small)
box.set_text_halign( array.get(bos_array,0), text.align_center)
box.set_text_valign( array.get(bos_array,0), text.align_center)
box.delete(array.get(box_array, i))
box.delete(array.get(label_array, i))
if zone_type == -1
for i = 0 to array.size(box_array) - 1
level_to_break = box.get_bottom(array.get(box_array,i))
if close <= level_to_break
copied_box = box.copy(array.get(box_array,i))
f_array_add_pop(bos_array, copied_box)
mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
box.set_top(array.get(bos_array,0), mid)
box.set_bottom(array.get(bos_array,0), mid)
box.set_extend( array.get(bos_array,0), extend.none)
box.set_right( array.get(bos_array,0), bar_index)
box.set_text( array.get(bos_array,0), 'BOS' )
box.set_text_color( array.get(bos_array,0), bos_label_color)
box.set_text_size( array.get(bos_array,0), size.small)
box.set_text_halign( array.get(bos_array,0), text.align_center)
box.set_text_valign( array.get(bos_array,0), text.align_center)
box.delete(array.get(box_array, i))
box.delete(array.get(label_array, i))
// Function to extend box endpoint
f_extend_box_endpoint(box_array) =>
for i = 0 to array.size(box_array) - 1
box.set_right(array.get(box_array, i), bar_index + 100)
//============================================================================
// SR FUNCTIONS
//============================================================================
percWidth(len, perc) => (ta.highest(len) - ta.lowest(len)) * perc / 100
//============================================================================
// SUPPLY/DEMAND CALCULATIONS
//============================================================================
atr = ta.atr(50)
swing_high = ta.pivothigh(high, swing_length, swing_length)
swing_low = ta.pivotlow(low, swing_length, swing_length)
var swing_high_values = array.new_float(5,0.00)
var swing_low_values = array.new_float(5,0.00)
var swing_high_bns = array.new_int(5,0)
var swing_low_bns = array.new_int(5,0)
var current_supply_box = array.new_box(history_of_demand_to_keep, na)
var current_demand_box = array.new_box(history_of_demand_to_keep, na)
var current_supply_poi = array.new_box(history_of_demand_to_keep, na)
var current_demand_poi = array.new_box(history_of_demand_to_keep, na)
var supply_bos = array.new_box(5, na)
var demand_bos = array.new_box(5, na)
// New swing high
if not na(swing_high)
f_array_add_pop(swing_high_values, swing_high)
f_array_add_pop(swing_high_bns, bar_index )
if show_price_action_labels
f_sh_sl_labels(swing_high_values, 1)
f_supply_demand(swing_high_values, swing_high_bns, current_supply_box, current_supply_poi, 1, atr)
// New swing low
else if not na(swing_low)
f_array_add_pop(swing_low_values, swing_low)
f_array_add_pop(swing_low_bns, bar_index )
if show_price_action_labels
f_sh_sl_labels(swing_low_values, -1)
f_supply_demand(swing_low_values, swing_low_bns, current_demand_box, current_demand_poi, -1, atr)
f_sd_to_bos(current_supply_box, supply_bos, current_supply_poi, 1)
f_sd_to_bos(current_demand_box, demand_bos, current_demand_poi, -1)
f_extend_box_endpoint(current_supply_box)
f_extend_box_endpoint(current_demand_box)
//============================================================================
// SR CALCULATIONS & PLOTTING
//============================================================================
rb = 10
prd = 284
ChannelW = 10
label_loc = 55
style = lineStyle == "Solid" ? line.style_solid : lineStyle == "Dotted" ? line.style_dotted : line.style_dashed
ph = ta.pivothigh(rb, rb)
pl = ta.pivotlow (rb, rb)
sr_levels = array.new_float(21, na)
prdhighest = ta.highest(prd)
prdlowest = ta.lowest(prd)
cwidth = percWidth(prd, ChannelW)
zonePerc = percWidth(300, zoneWidth)
aas = array.new_bool(41, true)
u1 = 0.0, u1 := nz(u1 )
d1 = 0.0, d1 := nz(d1 )
highestph = 0.0, highestph := highestph
lowestpl = 0.0, lowestpl := lowestpl
var sr_levs = array.new_float(21, na)
label hlabel = na, label.delete(hlabel )
label llabel = na, label.delete(llabel )
var sr_lines = array.new_line(21, na)
var sr_linesH = array.new_line(21, na)
var sr_linesL = array.new_line(21, na)
var sr_linesF = array.new_linefill(21, na)
var sr_labels = array.new_label(21, na)
if ph or pl
for x = 0 to array.size(sr_levels) - 1
array.set(sr_levels, x, na)
highestph := prdlowest
lowestpl := prdhighest
countpp = 0
for x = 0 to prd
if na(close )
break
if not na(ph ) or not na(pl )
highestph := math.max(highestph, nz(ph , prdlowest), nz(pl , prdlowest))
lowestpl := math.min(lowestpl, nz(ph , prdhighest), nz(pl , prdhighest))
countpp += 1
if countpp > 40
break
if array.get(aas, countpp)
upl = (ph ? high : low ) + cwidth
dnl = (ph ? high : low ) - cwidth
u1 := countpp == 1 ? upl : u1
d1 := countpp == 1 ? dnl : d1
tmp = array.new_bool(41, true)
cnt = 0
tpoint = 0
for xx = 0 to prd
if na(close )
break
if not na(ph ) or not na(pl )
chg = false
cnt += 1
if cnt > 40
break
if array.get(aas, cnt)
if not na(ph )
if high <= upl and high >= dnl
tpoint += 1
chg := true
if not na(pl )
if low <= upl and low >= dnl
tpoint += 1
chg := true
if chg and cnt < 41
array.set(tmp, cnt, false)
if tpoint >= strengthSR
for g = 0 to 40 by 1
if not array.get(tmp, g)
array.set(aas, g, false)
if ph and countpp < 21
array.set(sr_levels, countpp, high )
if pl and countpp < 21
array.set(sr_levels, countpp, low )
// Plot SR
var line highest_ = na, line.delete(highest_)
var line lowest_ = na, line.delete(lowest_)
var line highest_fill1 = na, line.delete(highest_fill1)
var line highest_fill2 = na, line.delete(highest_fill2)
var line lowest_fill1 = na, line.delete(lowest_fill1)
var line lowest_fill2 = na, line.delete(lowest_fill2)
hi_col = close >= highestph ? colorSup : colorRes
lo_col = close >= lowestpl ? colorSup : colorRes
if enableSR
highest_ := line.new(bar_index - 311, highestph, bar_index, highestph, xloc.bar_index, expandSR ? extend.both : extend.right, hi_col, style, lineWidth)
lowest_ := line.new(bar_index - 311, lowestpl , bar_index, lowestpl , xloc.bar_index, expandSR ? extend.both : extend.right, lo_col, style, lineWidth)
if useHLZones
highest_fill1 := line.new(bar_index - 311, highestph + zonePerc, bar_index, highestph + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
highest_fill2 := line.new(bar_index - 311, highestph - zonePerc, bar_index, highestph - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
lowest_fill1 := line.new(bar_index - 311, lowestpl + zonePerc , bar_index, lowestpl + zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
lowest_fill2 := line.new(bar_index - 311, lowestpl - zonePerc , bar_index, lowestpl - zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
linefill.new(highest_fill1, highest_fill2, color.new(hi_col, 80))
linefill.new(lowest_fill1 , lowest_fill2 , color.new(lo_col, 80))
if ph or pl
for x = 0 to array.size(sr_lines) - 1
array.set(sr_levs, x, array.get(sr_levels, x))
for x = 0 to array.size(sr_lines) - 1
line.delete(array.get(sr_lines, x))
line.delete(array.get(sr_linesH, x))
line.delete(array.get(sr_linesL, x))
linefill.delete(array.get(sr_linesF, x))
if array.get(sr_levs, x) and enableSR
line_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
array.set(sr_lines, x, line.new(bar_index - 355, array.get(sr_levs, x), bar_index, array.get(sr_levs, x), xloc.bar_index, expandSR ? extend.both : extend.right, line_col, style, lineWidth))
if useZones
array.set(sr_linesH, x, line.new(bar_index - 355, array.get(sr_levs, x) + zonePerc, bar_index, array.get(sr_levs, x) + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
array.set(sr_linesL, x, line.new(bar_index - 355, array.get(sr_levs, x) - zonePerc, bar_index, array.get(sr_levs, x) - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
array.set(sr_linesF, x, linefill.new(array.get(sr_linesH, x), array.get(sr_linesL, x), color.new(line_col, 80)))
for x = 0 to array.size(sr_labels) - 1
label.delete(array.get(sr_labels, x))
if array.get(sr_levs, x) and enableSR
lab_loc = close >= array.get(sr_levs, x) ? label.style_label_up : label.style_label_down
lab_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
array.set(sr_labels, x, label.new(bar_index + label_loc, array.get(sr_levs, x), str.tostring(math.round_to_mintick(array.get(sr_levs, x))), color=lab_col , textcolor=#000000, style=lab_loc))
hlabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, highestph, "High Level : " + str.tostring(highestph), color=hi_col, textcolor=#000000, style=label.style_label_down) : na
llabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, lowestpl , "Low Level : " + str.tostring(lowestpl) , color=lo_col, textcolor=#000000, style=label.style_label_up ) : na
Market Structure Pro + (@JP7FX)Market Structure Pro Plus (JP7FX)
Market Structure Pro Plus identifies swing highs and swing lows using a three candle confirmation method. It highlights liquidity behaviour and market structure shifts without manual marking.
Swing Point Detection
The indicator marks swing highs and lows when the middle candle in a three candle sequence forms the highest high or lowest low.
This approach reacts to local price behaviour and does not rely on a large lookback period.
Liquidity Grab Signals
The indicator highlights when price trades beyond a previous swing high or swing low and then returns.
These events help users review how liquidity is taken around prior highs and lows.
Break of Structure Signals
The indicator marks a break of structure when a candle closes beyond a previous swing point.
Bullish structure change signals occur when price closes above a prior swing high.
Bearish structure change signals occur when price closes below a prior swing low.
Deviation Stats and Projections
The script tracks how far price extends beyond the last confirmed swing high or swing low, in pips, after liquidity is taken.
It keeps a rolling history of these extensions and calculates an average combined extension for recent moves.
This average is shown in a small stats table as “Avg SD High/Low”.
Using this value, the indicator projects two reference levels from the latest confirmed swing:
• a “Deviation High” line projected from the last swing high
• a “Deviation Low” line projected from the last swing low
These projection lines are drawn as dotted levels with labels and can be used as reference zones based on recent extension behaviour.
Features
• Automatic swing high and swing low detection
• Liquidity grab marking
• Break of structure marking
• Deviation stats table with average extension value
• Projection lines for Deviation High and Deviation Low
• Alerts for liquidity grabs and structure changes
• Market type setting for forex, stock, crypto, commodity and futures
• Customisable colours, line styles and visibility options
• Works across all timeframes and assets
Use Cases
Useful for traders who study market structure, track trend shifts, or review liquidity and extension behaviour around highs and lows.
The indicator reduces manual chart work by highlighting swing points, structure changes and typical extension zones in real time.
Week high / Week low (Mo–Fr)The indicator tracks the weekly high and low levels of the market starting from Monday 00:00 and updates them throughout the week until Friday. It draws horizontal lines across the chart representing:
Weekly High
Weekly Low
Each level also displays a label that can be positioned in different ways depending on user settings.
🧠 How it works step-by-step
1. Every Monday a new week starts
When a new week begins:
The script stores the current candle’s high as the initial weekHigh
And the current candle’s low as weekLow
Previous week's lines and labels are deleted
New horizontal lines are created and extended to the right
Labels (for high & low) are placed initially at the start of the week
2. During Monday–Friday
On every candle:
If a new higher price is reached → weekly high updates
If a new lower price is reached → weekly low updates
The horizontal line moves to the new value
A saved index remembers where that high/low was created
3. Label Position Control
The user can choose how labels should be anchored:
Mode Meaning
Update point Label stays where the high/low occurred
Right edge Label always moves to the current bar (right end of week)
Right offset Like Right edge but shifted further right by X bars
You can also customize:
label background color
label text color
label size
whether the label points up/down (above or below the line)
line color, style, and width
4. Weekend behavior
On Saturday, the script stops extending the lines, effectively freezing the weekly high and low for that completed week.
Summary
This indicator is useful for traders who want automatic weekly levels, visually clean chart structure, and customizable label placement. It tracks market structure weekly, keeps levels persistent across the chart, and lets you choose exactly how those levels appear.
If you want, I can also create:
✔ previous week high/low
✔ midline (50% of the range)
✔ alerts when price breaks the weekly high/low
✔ highlight liquidity sweeps
ICC + Trident ORB UltimateICC + Trident ORB Ultimate – Indication / Correction / Continuation using multi-session ORB + confluence scoring
This tool is an intraday framework built around ICT-style Indication → Correction → Continuation (ICC) logic, using three coordinated Opening Range Boxes (“Trident ORB”) plus a confluence engine to grade breakouts and reversals.
It is not just a mashup of indicators. Each module has a specific role:
________________________________________
1. Core concept
The script combines:
• Three ORBs (“Trident”):
o European session ORB (bias & magnets)
o US Futures ORB (8:30 “engine” for the day)
o Cash session ORB (9:30 volatility filter)
• ICC structure:
o Indication – Directional bias from how price behaves around the Euro ORB (above = BULL, below = BEAR, inside = NEUTRAL).
o Correction – A dynamic Correction Zone built from the US Futures ORB (discount/premium area between ORB midline and range).
o Continuation – Qualified breakouts of the 8:30 ORB high/low, graded by a confluence score (A+/A/B/C).
• Confluence engine:
Optional filters (VWAP, RSI, FVG, SMT, swing structure, PDH/PDL, EMA stack, RTH) are combined into a single score and grade to highlight higher-probability continuation moves.
The goal is to give you one integrated view of:
session structure → day type → volatility → confluence → actionable breakouts/sweeps.
________________________________________
2. Trident ORB structure & day types
The script draws three configurable ORB boxes in your chosen timezone:
• Euro ORB (default 03:00–04:00)
o Defines early “indication” bias:
Above Euro high = BULL
Below Euro low = BEAR
Inside = NEUT
o On confirmed trend days, Euro high/low can be plotted as magnet levels (targets).
• US Futures ORB (8:30 ORB) (default 08:30–09:00)
o Main intraday “engine” box.
o The script tracks:
Breaks above/below the ORB
Rejections around the ORB midline
Sweeps – wicks that push past ORB high/low by a configurable % of the range, then close back inside.
• Cash ORB (default 09:30–10:00)
o Used as a volatility check: if the Cash ORB range is much wider than the 8:30 ORB, the day is flagged as “HIGH” volatility, and the confluence score is penalized.
Using the 8:30 ORB behavior, the script classifies the day type:
• TREND – multiple clean breaks and holding above/below the 8:30 ORB.
• RANGE – repeated rejections at the 8:30 midline with no clean break.
• TRAP – ORB sweeps (fake outs) that reverse back inside the range.
• TREND? / WAIT – early or uncertain structure.
Day type is shown both as a label on the chart and in the info table, and can optionally adjust the confluence score (e.g., penalty on TRAP/RANGE days, bonus on TREND days).
________________________________________
3. Confluence scoring (what feeds the A+/A/B/C grades)
For both long (BULL) and short (BEAR) directions, the indicator builds a score from several components:
• VWAP filter – price above/below VWAP.
• RSI filter – RSI within user-defined bullish/bearish bands.
• FVG detection – recent 3-bar Fair Value Gaps (weighted +2).
• SMT divergence – comparison vs. a second symbol (default ES1!):
o Bearish SMT = your chart makes a higher high while SMT ticker doesn’t confirm.
o Bullish SMT = your chart makes a lower low while SMT ticker doesn’t confirm.
• Swing / PDH-PDL proximity – recent swing highs/lows and prior-day high/low.
• EMA stack – 9/21/50 EMA alignment in trend direction.
• RTH session – optional extra point when inside regular trading hours.
On top of this base score, two modifiers can be applied:
• Day type modifier – e.g., +1 on TREND days, −1 on RANGE, −2 on TRAP (optional).
• Cash ORB volatility modifier – penalty when Cash ORB is abnormally wide.
The final result is:
• 0+ score per side (bull/bear)
• Letter grade:
o 5+ = A+
o 4 = A
o 3 = B
o <3 = C
Each label includes both the grade and the factors that contributed (e.g. A BULL (4pts) VWAP✓ RSI✓ FVG+2 ), so you can see why a signal printed.
________________________________________
4. Signals, sweeps & targets
Continuation signals (main entries)
• Bull continuation:
o Price crosses above the US Futures ORB high.
o Bull confluence score ≥ your Minimum Score to Show Signal.
o Not blocked by TRAP logic if ORB priority is enabled.
• Bear continuation:
o Price crosses below the US Futures ORB low.
o Bear confluence score meets the same threshold.
On these bars, the script plots BULL/BEAR labels with grade and factor list, colored by score. Optional alerts fire with the same information and day type included.
Sweep reversal signals (trap fades)
Separately from continuation, the script can highlight sweep reversals:
• Bull sweep signal:
o The 8:30 ORB low is swept (wick extends beyond low by X% of the ORB range and closes back inside).
o Euro indication is neutral or bullish.
• Bear sweep signal:
o The 8:30 ORB high is swept and price closes back inside, with a neutral or bearish indication.
These plot SWEEP↑ / SWEEP↓ labels and can trigger alerts, giving you a structured way to see trap-style reversals rather than random wicks.
Targets & correction zone
• Correction Zone:
o A shaded box extending right from the 8:30 ORB that marks the “correction” area between ORB midline and range boundary (different placement for long vs short bias).
o This is your primary pullback zone within the ICC framework.
• Expansion targets:
o Optional T1/T2/T3 lines at ±1.0, ±1.5 and ±2.0 times the 8:30 ORB range from the ORB high/low.
o These serve as simple volatility-based reference targets for partials or exhaustion zones.
________________________________________
5. Info table & optional overlays
A compact table in the top-right corner summarizes the environment at the latest bar:
• VWAP (above/below)
• RSI value (color-coded)
• FVG / SMT state (Bull/Bear/none)
• EMA stack (Bull/Bear/flat)
• Day type (TREND/TRAP/RANGE/etc.)
• Cash volatility (HIGH/OK)
• RTH (Yes/No)
• Last sweep (High/Low/none)
• Current bull/bear grades
Optional visual layers can be toggled on/off:
• FVG boxes
• SMT labels
• EMA lines
• VWAP line
• Prior Day High/Low lines
• Euro magnet levels
• ORB history, midlines, correction zone and targets
This allows you to keep the chart clean or fully instrumented depending on your preference.
________________________________________
6. How to use (practical workflow)
1. Load on an intraday timeframe (e.g., 1–5 minutes) and set the ORB times to match your broker/session if needed.
2. Watch the Trident ORBs form:
o Note the Euro “Indication” (BULL/BEAR/NEUT).
o Once the 8:30 ORB completes, monitor day type classification and Cash ORB volatility.
3. During the session:
o On trend days, focus on A+/A BULL/BEAR continuation labels that break the 8:30 ORB in the direction of Euro indication, ideally from inside the Correction Zone.
o On trap/range days, pay more attention to SWEEP↑ / SWEEP↓ signals and be conservative with continuation.
4. Use expansion targets as objective reference areas for partials and risk-to-reward planning.
5. Adapt filters & thresholds:
o Tighten Minimum Score to Show Signal for fewer, higher-quality signals.
o Turn specific filters on/off (FVG, SMT, EMA, VWAP, etc.) to match your own testing and market.
This script does not place trades or manage risk. It is a discretionary decision-support tool and should be combined with your own risk management and testing. Nothing here is financial advice.
EMA Market Structure [BOSWaves]EMA Market Structure - Trend-Driven Structural Mapping with Adaptive Swing Detection
Overview
The EMA Market Structure indicator provides an advanced framework for visualizing market structure through dynamically filtered trend and swing analysis.
Unlike conventional EMA overlays, which merely indicate average price direction, this model integrates trend acceleration, swing highs/lows, and break-of-structure (BOS) logic into a unified, visually intuitive display.
Each element adapts in real time to price movement, offering traders a living map of support, resistance, and trend bias that reacts fluidly to market momentum.
The result is a comprehensive, trend-aware representation of price structure.
EMA slope and acceleration guide trend perception, while swing points identify key inflection zones.
Breaks of prior highs or lows are highlighted with visual BOS labels and stop-loss projections, giving traders actionable context for continuation or reversal setups.
Unlike static lines or simple moving averages, the EMA Market Structure indicator fuses dynamic trend analysis with structural awareness to provide a clear picture of market bias and potential turning points.
Theoretical Foundation
The EMA Market Structure builds on principles of momentum filtering and structural analysis.
Standard moving averages track average price but ignore acceleration and context; this indicator captures both the directional slope of the EMA and its rate of change, providing a proxy for trend strength.
Simultaneously, swing detection identifies statistically significant highs and lows, while BOS logic flags decisive breaks in structure, aligned with trend direction.
At its core are three interacting components:
EMA Trend & Acceleration : Smooths price data while highlighting acceleration changes, producing gradient-driven color cues for trend momentum.
Swing Detection Engine : Identifies swing highs and lows over configurable bar lengths, ensuring key turning points are captured with minimal clutter.
Break-of-Structure Logic : Detects price breaches of previous swings and aligns them with EMA trend for actionable BOS signals, including projected stop-loss levels for tactical decision-making.
By integrating these elements, the system scales effectively across timeframes and assets, maintaining structural clarity while visualizing trend dynamics in real time. Traders receive both macro and micro perspectives of market movement, with clear cues for trend continuation or reversal.
How It Works
The EMA Market Structure indicator operates through layered processing stages:
EMA Slope & Acceleration : Calculates the EMA and its rate of change, normalizing via ATR and a smoothing function to produce gradient color coding. This allows instant visual identification of bullish or bearish momentum.
Swing Identification : Swing highs and lows are computed using configurable left/right bar lengths, filtered through a cool-off mechanism to prevent redundant signals and maintain chart clarity.
Structural Lines & Zones : Swing points are connected with lines, and shaded zones are drawn between successive highs/lows to highlight key support and resistance regions.
Break-of-Structure Detection : BOS events occur when price breaches a prior swing in alignment with the EMA trend. Bullish and bearish BOS signals include enhanced label effects and projected stop-loss lines and zones, providing immediate tactical reference.
Dynamic Background Mapping : The chart background adapts to EMA trend direction, reinforcing trend context with subtle visual cues.
Through these processes, the indicator creates a living, adaptive map of market structure that reflects both trend strength and swing-based inflection points.
Interpretation
The EMA Market Structure reframes market reading from simple trend following to structured awareness of price behavior:
Uptrend Phases : EMA is rising with positive acceleration, swings confirm higher lows, and BOS events occur above prior highs, signaling trend continuation.
Downtrend Phases : EMA slope is negative, swings form lower highs, and BOS events occur below prior lows, confirming bearish bias.
Trend Reversals : Flat or decelerating EMA with BOS failures may indicate impending structural change.
Critical Zones : Swing-based lines and shaded zones highlight areas where price may pause, reverse, or accelerate, providing high-probability decision points.
Visually, EMA color gradients, structural lines, and BOS labels combine to provide both statistical trend confirmation and actionable structural cues.
Strategy Integration
EMA Market Structure integrates seamlessly into trend-following and swing-based trading systems:
Trend Alignment : Confirm higher-timeframe EMA slope before entering continuation trades.
BOS Entry Triggers : Use BOS events aligned with EMA trend for tactical entries and stop placement.
Support/Resistance Mapping : Swing lines and zones help define areas for scaling, exits, or reversals.
Volatility Context : ATR-based smoothing and stop-loss buffers accommodate varying market volatility, ensuring robustness across conditions.
Multi-Timeframe Coordination : Combine higher-timeframe EMA trend and swings with lower-timeframe structural events for precision entries.
Technical Implementation Details
Core Engine : EMA slope and ATR-normalized acceleration for gradient-driven trend visualization.
Swing Framework : Pivot-based high/low detection with configurable bar lengths and cool-off intervals.
Structural Visualization : Lines, zones, and labels for high-fidelity mapping of support/resistance and BOS events.
BOS Engine : Detects structural breaks aligned with EMA trend, automatically plotting stop-loss lines and visual cues.
Performance Profile : Lightweight, optimized for real-time responsiveness across multiple timeframes.
Optimal Application Parameters
Timeframe Guidance:
1 - 5 min : Ideal for intraday swing spotting and microstructure trend tracking.
15 - 60 min : Medium-range structural analysis and BOS-driven entries.
4H - Daily : Macro trend mapping and key swing-based support/resistance identification.
Suggested Configuration:
EMA Length : 50
Swing Length : 5
Swing Cooloff : 10 bars
BOS Cooloff : 15 bars
SL Buffer : 0.1%
These suggested parameters should be used as a baseline; their effectiveness depends on the asset volatility, liquidity, and preferred entry frequency, so fine-tuning is expected for optimal performance.
Performance Characteristics
High Effectiveness:
Trending markets with defined swings and structural consistency.
Markets where EMA slope and acceleration reliably indicate momentum changes.
Reduced Effectiveness:
Choppy or sideways markets with minimal swing definition.
Random walk assets lacking clear structural anchors.
Integration Guidelines
Confluence Framework : Combine with volume, momentum, or BOSWaves structural indicators
to validate entries.
Directional Control: Follow EMA slope and BOS alignment for high-conviction trades.
Risk Calibration: Use SL projections for disciplined exposure management.
Multi-Timeframe Synergy: Confirm higher-timeframe trend before executing lower-timeframe structural trades.
Disclaimer
The EMA Market Structure is a professional-grade trend and structure visualization tool. It is not predictive or guaranteed profitable; performance depends on parameter tuning, market regime, and disciplined execution. BOSWaves recommends using it as part of a comprehensive analytical stack integrating trend, liquidity, and structural context.
Auto 5-Wave Fixed Channel + Wave 5 Top / Wave 2-ABC BottomAuto 5-Wave Fixed Channel + Wave 5 Top / Wave 2-ABC Bottom
by Ron999
1. What this indicator does
This tool automatically hunts for bullish 5-wave impulse structures and then:
Labels the waves: W1, W2, W3, W4, W5
Draws a fixed “acceleration” channel based on the wave structure
Projects a Wave-5 target zone using a 1.618 extension
Marks the Wave-2 level as an ABC correction target
Triggers optional alerts when:
A new Wave-5 top completes
An ABC bottom forms back near the Wave-2 low
It’s designed as a mechanical, rule-based approximation of Elliott 5-wave impulses – built for traders who like the idea of wave structure but want something objective and programmable.
2. How the wave logic works
The script continuously scans for pivot highs and lows using a user-defined Pivot Length.
It only keeps the last 5 alternating pivots (high → low → high → low → high).
When those last 5 pivots form this pattern:
Pivot 1 → High (W1)
Pivot 2 → Low (W2)
Pivot 3 → High (W3)
Pivot 4 → Low (W4)
Pivot 5 → High (W5)
…the indicator treats this as a bullish 5-wave impulse.
When such a structure is detected, it “locks in” the wave prices and bars and draws the channels and labels.
Note: Pivots are only confirmed after Pivot Length bars, so swings are slightly delayed by design (standard pivot logic).
3. Channels & levels
Once a valid bullish 5-wave structure is found, the script builds three key pieces:
a) Base Acceleration Channel (Blue)
Anchored from Wave-2 low toward Wave-3 high.
This forms a rising acceleration channel that represents the impulse leg.
The channel extends to the right, so you can see how price interacts with it after W3–W5.
b) Wave-5 Target Line (Red, dashed)
Uses the height from Wave-2 low to Wave-3 high.
Projects a 1.618 extension of that height above Wave-3.
This line acts as a potential Wave-5 exhaustion zone (take-profit / reversal watch area).
c) Wave-2 / ABC Bottom Level (Green, dotted)
Horizontal line drawn at the Wave-2 low.
This acts as a retest / corrective target for the ABC correction after the impulse completes.
When price later revisits this area (within a tolerance), the script can mark it as a potential ABC bottom.
4. Labels & signals
If labels are enabled:
W1, W2, W3, W4, W5 are plotted directly on their corresponding pivot bars.
When an ABC-style retest is detected near the Wave-2 level, an “ABC” label is printed at that low.
Wave-5 Top Event
Triggered when a new valid bullish 5-wave structure is completed.
The last pivot high in the pattern is flagged as Wave-5.
ABC Bottom Event
After a Wave-5 impulse, the script watches for new low pivots.
If a new low forms within ABC Bottom Proximity (%) of the Wave-2 price, it is treated as an ABC bottom near Wave-2 and marked on the chart.
5. Inputs & customization
Show Fixed Channels
Toggle all channel drawing on/off.
Label Waves
Toggle plotting of W1–W5 and ABC labels.
Alerts: Wave-5 Top & ABC Bottom
Master switch for enabling the script’s alert conditions.
Pivot Length
Controls how “swingy” the detection is.
Smaller values → more frequent, smaller waves
Larger values → fewer, larger structural waves
ABC Bottom Proximity (%)
Allowed percentage distance between the ABC low and the Wave-2 price.
Example: 5% means any ABC low within ±5% of Wave-2 is considered valid.
6. Alerts (how to use them)
The script exposes two alertcondition() events:
Wave-5 Top (Bullish Impulse)
Fires when a new 5-wave bullish structure completes.
Use this to watch for potential exhaustion tops or to tighten stops.
ABC Bottom near Wave-2 Low
Fires when an ABC-style correction prints a low near the Wave-2 level.
Use this to stalk potential end-of-correction entries in the direction of the original impulse.
On TradingView, add an alert to the script and choose the desired condition from the dropdown.
7. How to use it in your trading
This tool is best used as a structural context layer, not a standalone system:
Identify bullish impulsive trends when a Wave-5 structure completes.
Use the Wave-5 target line as a potential area for:
Scaling out
Watching for exhaustion / divergences / reversal patterns
Use the Wave-2/ABC level and ABC Bottom signal:
To look for end of correction entries back in the trend direction
To align with your own confluence (support/resistance, volume, RSI, etc.)
It works well on crypto, FX, indices, and stocks, especially on higher timeframes where structure is cleaner.
8. Limitations & notes
This is a mechanical approximation of Elliott 5-wave theory — it will not match every analyst’s discretionary count.
Pivots are confirmed after Pivot Length bars, so signals are not instant; they’re based on completed swings.
The indicator currently focuses on bullish impulses (upward 5-wave structures).
As always, this is not financial advice. Combine it with your own strategy, risk management, and confirmation tools.
Created & coded by: Ron999
Built for traders who want wave structure + fixed channels, without the subjective Elliott argument on every chart. files.catbox.moe
Morning ORB FVG Trigger✅ Overview
Morning ORB FVG Trigger is a complete intraday trading framework built around:
A Morning Opening Range Breakout (ORB)
The first Fair Value Gap (FVG) after that breakout
Strict risk management and position sizing
Optional HTF trend filter (Daily / Weekly / Monthly)
Optional Daily ATR filter to avoid extreme days
The script is designed for futures / indices / FX on intraday charts up to 15 minutes and for traders who want a clean, mechanical entry framework with clear risk.
🧠 Core idea
Define a morning opening range (e.g. 09:30–09:45).
Wait for a clean breakout above/below that range.
After the breakout, wait for the first FVG in breakout direction,
confirmed by the next candle (no immediate full reclaim).
Use a chosen stop logic + R:R factor to build risk/reward boxes.
Calculate position size based on your account risk.
(Optional) Only take trades:
In the direction of the HTF EMA trend (D/W/M).
On days where the morning range is within a band of the Daily ATR.
You can also disable all signals/boxes and use the script just as a visual ORB tool.
⏰ 1. ORB / Morning Range
Inputs (Main section)
Morning Range Session
Time window of the opening range in exchange time
Example: 09:30–09:45 for a 15-minute ORB.
You can type custom ranges (e.g. 09:30–09:35 for a 5-minute ORB).
Risk/Reward (TP factor)
Multiplier for the take-profit distance relative to the stop.
2.0 = TP is 2× the stop distance
1.5 = TP is 1.5× the stop distance
Show ORB range
If enabled, draws:
ORB high/low lines
ORB labels (e.g. 15min ORB high / low)
Optional midline
Extend ORB lines to the right (bars)
How many bars to extend the ORB high/low horizontally beyond the ORB itself.
Trade box width (bars)
Horizontal width (in bars) of:
Red risk box (entry–stop)
Green reward box (entry–TP)
Implementation details
The ORB is always calculated on 1-minute data internally, so it stays precise even on 5m/15m charts.
The script only works on intraday timeframes up to 15 minutes.
📦 2. FVG Block
Group: “FVG”
Threshold %
Minimum size of an FVG in % of price.
0 = every FVG
Higher values = only larger gaps
Auto threshold (from volatility)
If enabled, the minimum FVG size is derived from historical volatility
instead of a fixed percentage.
Allow breakout FVG partly inside ORB
Off (default): the FVG must lie fully outside the ORB.
On: the breakout FVG itself may still overlap the ORB a bit,
as long as it is the first one attached to the breakout move.
Enable FVG entry signals, boxes & alerts
On: full system – FVG detection, entry labels, risk/TP boxes, alerts.
Off: no entries, no risk/TP boxes, no alerts.
You only get the ORB and (optionally) the HTF dashboard, so you can trade your own setups.
Entry mode
Entry mode (Mid / Edge / NextOpen)
Mid – Entry at the midpoint of the FVG.
Edge – Long at the upper FVG edge, short at the lower FVG edge.
NextOpen – No limit order in the gap. Entry is placed at the next bar open after FVG confirmation.
Edge offset (ticks)
Additional offset for Edge entries:
Long:
+ticks = a bit above the FVG (more conservative)
-ticks = deeper into the FVG (more aggressive)
Short:
+ticks = a bit below the FVG
-ticks = deeper into the FVG
FVG detection logic
Uses a LuxAlgo-style 3-candle FVG pattern (gap between candle 1 and 3).
Only one FVG is taken: the first valid FVG after the ORB breakout in breakup direction.
The FVG candle is the middle bar; the script:
Detects the FVG on the previous bar.
Waits for the current bar to confirm it:
Bullish: current low must stay above the lower FVG boundary
Bearish: current high must stay below the upper FVG boundary
Only then an entry signal is generated.
🛑 3. Stop Logic
Group: “Stop Logic”
Stop mode (PrevBar / Pivot / FVG Candle)
PrevBar – Stop at the low/high of the candle before the FVG
(tight/aggressive).
FVG Candle – Stop at the low/high of the FVG candle itself
(medium).
Pivot – Stop at the most recent swing high/low
using pivotLeft / pivotRight pivots (more conservative).
Ticks (stop buffer)
Offset (in ticks) from the selected stop level.
> 0 = further away (more room, more risk)
< 0 = closer (tighter stop)
Pivot left / Pivot right
Number of candles left/right to define a swing high/low
when using Pivot stop mode.
Typical intraday values: 2–3.
The script also sanity-checks the stop:
if the calculated stop would be invalid (e.g. above entry in a long), it moves it by a minimal distance (2 ticks) to keep a valid risk.
📈 4. HTF Trend Filter (Daily / Weekly / Monthly)
Group: “HTF Trend Filter”
Enable HTF trend filter
If enabled, trades are only allowed:
Long when at least 2 of D/W/M closes are above their EMA
Short when at least 2 of D/W/M closes are below their EMA
EMA length (D/W/M)
EMA length for all three higher timeframes (Daily, Weekly, Monthly).
This helps focus entries in the direction of the dominant higher-timeframe trend.
📊 5. ATR Filter (Daily)
Group: “ATR Filter (Daily)”
Use daily ATR filter
If enabled, the height of the ORB (ORB high – ORB low) must be within
a band of the Daily ATR to allow any signals.
Daily ATR length
ATR period on the Daily timeframe.
Min ORB size vs ATR
Lower bound:
Example: 0.3 → ORB must be at least 0.3 × Daily ATR
0.0 = no minimum.
Max ORB size vs ATR
Upper bound:
Example: 1.5 → ORB must be ≤ 1.5 × Daily ATR
0.0 = no maximum.
If the ORB is too small (choppy) or too large (exhausted move), no breakout or FVG signal will be generated on that day.
🧭 6. HTF Dashboard & Signal Labels
Group: “HTF Trend Dashboard”
Show HTF dashboard
Draws a small label at the top of the chart showing:
HTF Trend (EMA X)
D: UP/FLAT/DOWN
W: UP/FLAT/DOWN
M: UP/FLAT/DOWN
Dashboard position
Top Right, Top Center, Top Left – places the dashboard at the top.
Over Risk Info – no top dashboard; instead, the HTF trend info is shown as a label near the risk box when a new signal appears.
Lookback (bars) for top anchor
How many bars to use to determine the top price level for dashboard placement.
Show HTF trend above risk box on signal
Only relevant if Dashboard position = Over Risk Info.
When enabled, a small HTF label appears near the risk box for each new trade.
Signal label vertical offset (ticks)
Vertical spacing between risk info label and HTF label.
Minimum spacing HTF/Risk (ticks)
Ensures a minimum vertical distance so the two labels don’t overlap.
HTF signal label X offset (bars)
Horizontal offset (left/right) relative to the risk info label.
⏳ 7. ORB–FVG Filters (Session & Time Window)
Group: “ORB FVG Filter”
Only same session day
If enabled, FVG entries are only allowed on the same calendar day
as the ORB. When the date changes, all state & drawings are reset.
Limit hours after ORB
Enables a time window after the ORB end.
Trading window after ORB (hours)
Length of that window in hours.
Example: 2.0 → FVG signals only in the first 2 hours after ORB end.
💰 8. Risk Management & Position Sizing
Group: “Risk Management”
Calculate position size
If enabled, the script computes suggested mini and micro contract size for you.
Account size
Your trading account size (in account currency).
Risk mode
Percent – risk is a % of account size (Account risk %).
Fixed amount – risk is a fixed dollar amount (Fixed risk ($)).
Account risk %
Risk per trade as a percentage of account size (e.g. 1.0 for 1%).
Fixed risk ($)
Fixed risk per trade in dollars when using Fixed amount mode.
Micro factor (vs mini)
How much a micro contract is worth relative to a mini.
Example:
0.1 → one micro moves 1/10 of one mini.
Risk Info label
For each new trade, a label is shown above the boxes with:
Stop distance in price and $ risk per mini
Max risk allowed for the trade
Suggested mini and micro size
Text like:
Suggested: 2 mini
Suggested: 5 micro
or Suggested: no trade
This makes the script especially useful for prop-firm rules or strict risk discipline.
🎨 9. Visual Style (Boxes, Labels, ORB Lines)
Group: “Box & Label Style (Trade)”
Label font size (Very small, Small, Normal, Large)
Entry label BG / text color
Stop label BG / text color
TP label BG / text color
Risk info BG / text color
Risk box color (entry–stop zone)
Reward box color (entry–TP zone)
Group: “ORB Style”
ORB high line color
ORB low line color
ORB line width
ORB label font size
ORB label background color
ORB label text color
Show ORB midline
ORB midline color / width / style (Solid / Dashed / Dotted)
⚠️ 10. Alerts
Group: “Alerts”
The script defines three alert conditions:
Long entry FVG breakout
Triggered when a new long signal appears.
Short entry FVG breakout
Triggered when a new short signal appears.
FVG entry (long/short)
Generic alert for any new signal (long or short).
To use them:
Add the indicator to the chart.
Open the Alerts dialog → “Condition”.
Select this script and one of the alert conditions.
Set your preferred expiration and notification settings.
Alerts only fire when Enable FVG entry signals, boxes & alerts is on.
🧩 11. How the trading logic flows (summary)
Build ORB on 1-minute data during the selected session.
Optionally reject the day if ORB is outside the ATR bounds.
Wait for a breakout (close above high or below low), respecting HTF trend filter.
After breakout, look for the first valid FVG in that direction:
Outside the ORB (unless breakout FVG allowed inside)
Confirmed by the next candle (no full reclaim)
Once confirmed:
Compute entry, stop, target.
Draw risk/reward boxes and all labels.
Optionally show HTF signal label over the risk info.
Trigger alerts if enabled.
If you disable FVG signals, only steps 1–3 (plus dashboard) are effectively active.
⚠️ 12. Notes & Disclaimer
Script is intended for intraday trading up to 15-minute timeframes.
All signals are mechanical and do not guarantee profitability.
Always backtest and forward-test on your own data before risking real money.
This script is for educational purposes only and is not financial advice.
🚀 Quick-start guide
Add the script to your chart
Use an intraday timeframe ≤ 15 minutes (1m, 3m, 5m, 15m).
Works best on liquid indices, futures, FX and large-cap stocks.
Set the Morning Range
In “Morning Range Session” choose the exchange’s opening window.
Examples
US index futures (CME): 08:30–08:45 or 08:30–08:35
US stocks (NYSE/Nasdaq): 09:30–09:45 or 09:30–09:35
The ORB is always calculated on 1-minute data internally, so the range stays accurate on higher intraday charts.
Keep the default filters at first
HTF Trend Filter: ON
EMA length = 20
This will only allow trades in the direction of the dominant D/W/M trend.
ATR Filter: OFF (optional; you can enable later once you’re comfortable).
Use the full trade system
In the FVG group leave
“Enable FVG entry signals, boxes & alerts” = ON
Entry mode: Mid
Stop mode: FVG Candle or PrevBar
Risk/Reward: 2.0 as a starting point.
Set your risk
Turn on “Calculate position size”.
Enter your Account size and choose either:
Risk mode = Percent (e.g. 1.0 = 1% per trade), or
Risk mode = Fixed amount (e.g. $250 per trade).
The risk info label will show:
Stop distance in price and $/contract
Max allowed risk
Suggested mini and micro contract size.
Enable alerts (optional)
Open the Alerts dialog → Condition: this script.
Choose one of:
Long entry FVG breakout
Short entry FVG breakout
FVG entry (long/short)
Choose “Once per bar” or “Once per bar close”, and your preferred notification type.
Replay & journal
Use the TradingView bar replay tool to step through past days.
Focus on:
How the ORB defines the structure.
How the first confirmed FVG outside the ORB behaves.
Whether the risk/TP levels fit your own style and product.
🎛 Recommended settings & profiles
These are starting points, not rules. Always adapt to the instrument and your own risk tolerance.
1. Conservative / Trend-following
Timeframe: 5m or 15m
Morning Range Session: 15-minute ORB around the cash or futures open
FVG
Threshold %: 0.05–0.1 (filter out very small gaps)
Auto threshold: OFF (keep it simple)
Allow breakout FVG partly inside ORB: OFF
Enable FVG entry signals/boxes/alerts: ON
Entry mode: Mid
Stop Logic
Stop mode: Pivot
Pivot left/right: 2–3
Stop buffer: +1–2 ticks
HTF Trend Filter
Enabled: ON
EMA length: 20
ATR Filter
Enabled: ON
Daily ATR length: 14
Min ORB vs ATR: 0.3–0.4
Max ORB vs ATR: 1.2–1.5
Risk Management
Risk mode: Percent
Account risk: 0.5–1.0%
Idea: Only trade when the higher-timeframe trend supports the move and the opening range is of a “normal” size for the current volatility.
2. Balanced / Intraday directional
Timeframe: 3m or 5m
FVG
Threshold %: 0.02–0.05
Auto threshold: ON (lets the script adapt to volatility)
Allow breakout FVG partly inside ORB: ON
(first breakout FVG may partly sit inside the ORB)
Entry mode: Edge
Edge offset (ticks): 0 or +1
Stop Logic
Stop mode: FVG Candle
Stop buffer: 0–1 ticks
HTF Trend Filter
Enabled: ON
ATR Filter
Enabled: OFF (optional)
Risk Management
Risk mode: Percent
Account risk: 1.0–1.5% (if this fits your plan)
Idea: Slightly more aggressive entries at the gap edge, still aligned with HTF trend, but with more flexibility on ATR.
3. Aggressive / Scalping around the ORB
Timeframe: 1m or 3m
FVG
Threshold %: 0.0–0.02
Auto threshold: ON
Allow breakout FVG partly inside ORB: ON
Entry mode: NextOpen or Edge with a negative offset (deeper into the gap)
Stop Logic
Stop mode: PrevBar
Stop buffer: 0 or -1 tick
HTF Trend Filter
Enabled: OFF (or ON but treat as soft guidance)
ATR Filter
Enabled: OFF
Risk Management
Risk mode: Percent
Account risk: lower, e.g. 0.25–0.5% per trade
Idea: More trades and tighter stops. Best for experienced traders who understand the limitations of scalping and whipsaw risk.
Final reminder
All of these are templates, not guarantees:
Always check how the system behaves on your market and session.
Start on replay and demo before trading real money.
Adjust filters (HTF, ATR, thresholds) until the signals fit your personal approach.
Session Open Range, Breakout & Trap Framework - TrendPredator OBSession Open Range, Breakout & Trap Framework — TrendPredator Open Box
Stacey Burke’s trading approach combines concepts from George Douglas Taylor, Tony Crabel, Steve Mauro, and Robert Schabacker. His framework focuses on reading price behaviour across daily templates and identifying how markets move through recurring cycles of expansion, contraction, and reversal. While effective, much of this analysis requires real-time interpretation of session-based behaviour, which can be demanding for traders working on lower intraday timeframes.
The TrendPredator indicators formalize parts of this methodology by introducing mechanical rules for multi-timeframe bias tracking and session structure analysis. They aim to present the key elements of the system—bias, breakouts, fakeouts, and range behaviour—in a consistent and objective way that reduces discretionary interpretation.
The Open Box indicator focuses specifically on the opening behaviour of major trading sessions. It builds on principles found in classical Open Range Breakout (ORB) techniques described by Tony Crabel, where a defined time window around the session open forms a structural reference range. Price behaviour relative to this range—breaking out, failing back inside, or expanding—can highlight developing session bias, potential trap formation, and directional conviction.
This indicator applies these concepts throughout the major equity sessions. It automatically maps the session’s initial range (“Open Box”) and tracks how price interacts with it as liquidity and volatility increase. It also incorporates related structural references such as:
* the first-hour high and low of the futures session
* the exact session open level
* an anchored VWAP starting at the session open
* automated expansion levels projected from the Open Box
In combination, these components provide a unified view of early session activity, including breakout attempts, fakeouts, VWAP reactions, and liquidity targeting. The Open Box offers a structured lens for observing how price transitions through the major sessions (Asia → London → New York) and how these behaviours relate to higher-timeframe bias defined in the broader TrendPredator framework.
Core Features
Open Box (Session Structure)
The indicator defines an initial session range beginning at the selected session open. This “Open Box” represents a fixed time window—commonly the first 30 minutes, or any user-defined duration—that serves as a structural reference for analysing early session behaviour.
The range highlights whether price remains inside the box, breaks out, or rejects the boundaries, providing a consistent foundation for interpreting early directional tendencies and recognising breakout, continuation, or fakeout characteristics.
How it works:
* At the session open, the indicator calculates the high and low over the specified time window.
* This range is plotted as the initial structure of the session.
* Price behaviour at the boundaries can illustrate emerging bias or potential trap formation.
* An optional secondary range (e.g., 15-minute high/low) can be enabled to capture early volatility with additional precision.
Inputs / Options:
* Session specifications (Tokyo, London, New York)
* Open Box start and end times (e.g., equity open + first 30 minutes, or any custom length)
* Open Box colour and label settings
* Formatting options for Open Box high and low lines
* Optional secondary range per session (e.g., 15-minute high/low)
* Forward extension of Open Box high/low lines
* Number of historic Open Boxes to display
Session VWAPs
The indicator plots VWAPs for each major trading session—Asia, London, and New York—anchored to their respective session opens. These session-specific VWAPs assist in tracking how value develops through the day and how price interacts with session-based volume distributions.
How it works:
* At each session open, a VWAP is anchored to the open price.
* The VWAP updates throughout the session as new volume and price data arrive.
* Deviations above or below the VWAP may indicate balance, imbalance, or directional control.
* Viewed together, session VWAPs help identify transitions in value across sessions.
Inputs / Options:
* Enable or disable VWAP per session
* Adjustable anchor and end times (optionally to end of day)
* Line styling and label settings
* Number of historic VWAPs to draw
First Hour High/Low Extensions
The indicator marks the high and low formed during the first hour of each session. These reference points often function as early control levels and provide context for assessing whether the session is establishing bias, consolidating, or exhibiting reversal behaviour.
How it works:
* After the session starts, the indicator records the highest and lowest prices during the first hour.
* These levels are plotted and extended across the session.
* They provide a visual reference for observing reactions, targets, or rejection zones.
Inputs / Options:
* Enable or disable for each session
* Line style, colour, and label visibility
* Number of historic sessions displayed
EQO Levels (Equity Open)
The indicator plots the opening price of each configured session. These “Equity Open” levels represent short-term reference points that can attract price early in the session.
Once the level is revisited after the Open Box has formed, it is automatically cut to avoid clutter. If not revisited, the line remains as an untested reference, similar to a naked point of control.
How it works:
* At session open, the open price is recorded.
* The level is plotted as a local reference.
* If price interacts with the level after the Open Box completes, the line is cut.
* Untested EQOs extend forward until interacted with.
Inputs / Options:
* Enable/disable per session
* Line style and label settings
* Optional extension into the next day
* Option for cutting vs. hiding on revisit
* Number of historic sessions displayed
OB Range Expansions (Automatic)
Range expansions are calculated from the height of the Open Box. These levels provide structured reference zones for identifying potential continuation or exhaustion areas within a session.
How it works:
* After the Open Box is formed, multiples of the range (e.g., 1×, 2×, 3×) are projected.
* These expansion levels are plotted above and below the range.
* Price reactions near these areas can illustrate continuation, hesitation, or potential reversal.
Inputs / Options:
* Enable or disable per session
* Select number of multiples
* Line style, colour, and label settings
* Extension length into the session
Stacey Burke 12-Candle Window Marker
The indicator can highlight the 12-candle window often referenced in Stacey Burke’s session methodology. This window represents the key active period of each session where breakout attempts, volatility shifts, and reversal signatures often occur.
How it works:
* A configurable window (default 12 candles) is highlighted from each session open.
* This window acts as a guide for observing active session behaviour.
* It remains visible throughout the session for structural context.
Inputs / Options:
* Enable/disable per session
* Configurable window duration (default: 3 hours)
* Colour and transparency controls
Concept and Integration
The Open Box is built around the same multi-timeframe logic that underpins the broader TrendPredator framework.
While higher-timeframe tools track bias and setups across the H8–D–W–M levels, the Open Box focuses on the H1–M30 domain to define session structure and observe how early intraday behaviour aligns with higher-timeframe conditions.
The indicator integrates with the TrendPredator FO (Breakout, Fakeout & Trend Switch Detector), which highlights microstructure signals on lower timeframes (M15/M5). Together they form a layered workflow:
* Higher timeframes: context, bias, and developing setups
* TrendPredator OB: intraday and intra-session structure
* TrendPredator FO: microstructure confirmation (e.g., FOL/FOH, switches)
This alignment provides a structured way to observe how daily directional context interacts with intraday behaviour.
See the public open source indicator TP FO here (click on it for access):
Practical Application
Before Session Open
* Review previous session Open Box, Open level, and VWAPs
* Assess how higher-timeframe bias aligns with potential intraday continuation or reversal
* Note untested EQO levels or VWAPs that may function as liquidity attractors
During Session Open
* Observe behaviour around the first-hour high/low and higher-timeframe reference levels
* Monitor how the M15 and 30-minute ranges close
* Track reactions relative to the session open level and the session VWAP
After the Open Box completes
* Assess price interaction with Open Box boundaries and first-hour levels
* Use microstructure signals (e.g., FOH/FOL, switches) for potential confirmation
* Refer to expansion levels as reference zones for management or target setting
After Session
* Review how price behaved relative to the Open Box, EQO levels, VWAPs, and expansion zones
* Analyse breakout attempts, fakeouts, and whether intraday structure aligned with the broader daily move
Example Workflow and Trade
1. Higher-timeframe analysis signals a Daily Fakeout Low Continuation (bullish context).
2. The New York session forms an Open Box; price breaks above and holds above the first-hour high.
3. A Fakeout Low + Switch Bar appears on M5 (via FO), after retesting the session VWAP triggering the entry.
4. 1x expansion level serves as reference targets for take profit.
Relation to the TrendPredator Ecosystem
The Open Box is part of the TrendPredator Indicator Family, designed to apply multi-timeframe logic consistently across:
* higher-timeframe context and setups
* intraday and session structure (OB)
* microstructure confirmation (FO)
Together, these modules offer a unified structure for analysing how daily and intraday cycles interact.
Disclaimer
This indicator is for educational purposes only and does not guarantee profits.
It does not provide buy or sell signals but highlights structural and behavioural areas for analysis.
Users are solely responsible for their trading decisions and outcomes.






















